首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-04-06 
无法将类型“System.Data.SqlClient.SqlDataReader”隐式转换为“int”public static SqlDataReader GetTopDat

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

热点排行