如果存储过程是带返回参数的,要获取该参数的值必须在数据库连接关闭后才会取到,否则获得的值是空值,要使数据库连接可控的关闭,最好的方法是使用using:
如:
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Proc_Select";
cmd.Parameters.Add("@pagenow", SqlDbType.Int).Value = pagenow;
cmd.Parameters.Add("@pagesize", SqlDbType.Int).Value = pagesize;
cmd.Parameters.Add("@recordcount", SqlDbType.Int).Direction = ParameterDirection.Output;
SqlDataReader reader = SQLHelper.ExecuteReader("localtestlink", cmd)
while (reader.Read())
{
BH_modelList.Add(new m_BuildHouse(reader.GetInt32(0), reader.GetInt32(1), reader.GetString(2),
reader.GetString(3), reader.GetString(4),
reader.GetDateTime(9).ToString().Substring(5)));
}
if (cmd.Parameters["@recordcount"].Value != DBNull.Value)
{
recordcount = SecurityDeal.checkInt(cmd.Parameters["@recordcount"].Value, 9);
}
recordcount取到的是空值,这里就是默认值9
改为
using(SqlDataReader reader = SQLHelper.ExecuteReader("localtestlink", cmd))
{
while (reader.Read())
{
BH_modelList.Add(new m_BuildHouse(reader.GetInt32(0), reader.GetInt32(1), reader.GetString(2),
reader.GetString(3), reader.GetString(4),
reader.GetDateTime(9).ToString().Substring(5)));
}
}
recordcount取到的才是正确的值