日期:2014-05-16  浏览次数:20392 次

问大家一个简单的问题,应该都遇到过吧
用DO.NET访问数据库,查询结果只有一个值时,如何将查询到的值赋值给已定义的变量?求大神,急!

代码如下  如何获取sqlDr的值,并赋值给value  ,后面程序还要用到这个查询值
 string sqlstr = "IF EXISTS (SELECT * FROM student WHERE sno = @sno and name=@name)  select @value=1;else select @value=0;select @value";   //定义要执行的SQL语句

        sqlCom.Parameters.Add("@sno", SqlDbType.Int);                //添加参数      参数化查询
        sqlCom.Parameters.Add("@value", SqlDbType.Int);                //添加参数      参数化查询
        sqlCom.Parameters.Add("@name", SqlDbType.Char,50);                //添加参数      参数化查询
        sqlCom.Parameters[0].Value = id;
        sqlCom.Parameters[1].Value = value;
        sqlCom.Parameters[2].Value = name;
        
        sqlCom.CommandText = sqlstr;

        SqlDataReader sqlDr = sqlCom.ExecuteReader();        //执行SQL语句,并返回结果记录集到sqlDr对象

------解决方案--------------------
如果确定只有一个值,用这个吧
object obj  = sqlCom.ExecuteScalar()
------解决方案--------------------
//执行SQL语句,并返回单个结果
------解决方案--------------------
Convert.ToInt32(sqlCom.ExecuteScalar());
------解决方案--------------------
引用:
Convert.ToInt32(sqlCom.ExecuteScalar());

正解
------解决方案--------------------
IF EXISTS (SELECT * FROM student WHERE sno = @sno and name=@name)  select 1 else select 0

这就足矣了,不需要写那么复杂。


对于结果,直接进行类型转换就行了,可以写  (int)sqlCom.ExecuteScalar(),不需要调用 Convert。
------解决方案--------------------
按条件查找数据,找到输出“1”,否则输出“0”。兄弟你是想实现这功能吗?其实还可以这样:
  1、SQL可以这样写: SELECT COUNT(*) FROM student  WHERE sno = @sno and name=@name。
  2、然后执行ExecuteScalar(),这个方法返回的一个object对象,必须显示的转换下类型:int obj  = (int)sqlCom.ExecuteScalar()