日期:2014-05-18  浏览次数:20399 次

无法将类型“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(),返回受影响行数。