问大家一个简单的问题,应该都遇到过吧
用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());
------解决方案--------------------
正解
------解决方案--------------------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()