当前位置: 代码迷 >> ASP.NET >> 无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”,该怎么解决
  详细解决方案

无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”,该怎么解决

热度:5068   发布时间:2013-02-25 00:00:00.0
无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”
public static SqlDataReader GetTopData(string sql)
  {
  SqlConnection conn = DBClass.GetConnection();
  conn.Open();
  SqlCommand cmd = new SqlCommand(sql, conn);
  try
  {
  cmd.ExecuteScalar();
  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  return dr;
  }
  catch (Exception ex)
  {
  throw (ex);
  }

  }

  string searchSql = @"select count(*) from userinfo where uid like '%'"+tbKey.Text.Trim()+"'%' or uname like '%'"+tbKey.Text.Trim()+"'%'";
  int o = SqlHelper.GetTopData(searchSql); //查询总的有多少条数据


哪个大哥 教我把这个count(*)值 取出来

------解决方案--------------------------------------------------------
连接关了DR就完了,换DATASET就O了。

CommandBehavior.CloseConnection
我不止一次看到这样用的,是不是哪本书上这么写的?
------解决方案--------------------------------------------------------
你应该用 Int32 count = (Int32) cmd.ExecuteScalar();

------解决方案--------------------------------------------------------
SqlDataReader dr 的有效域是你的 try {}
------解决方案--------------------------------------------------------
让你的方法返回Int型,执行ExecuteScalar(),就能取出count
------解决方案--------------------------------------------------------
SqlDataReader reader=SqlHelper.GetTopData(searchSql); 
reader.Read();
int o=Convert.ToInt32(reader[0]);
------解决方案--------------------------------------------------------
ExecuteScalar(),返回受影响行数。
  相关解决方案