读书人

查询数据SqlDataReader,该如何解决

发布时间: 2012-05-03 14:06:56 作者: rapoo

查询数据SqlDataReader

C# code
 private const string SQL_SELECT_USER = "SELECT ID,OId,Access,User_name,Img,CARDs,NAMEs From  info  WHERE ID = @Id";     private const string PARM_Id = "@Id";     public ModelInfo info(int id) {             ModelInfo info= new ModelInfo();             SqlParameter parm = new SqlParameter(PARM_Id, SqlDbType.Int);            parm.Value = id;             using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_USER, parm))             {                    account = new ModelInfo (rdr.GetInt32(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4), rdr.GetString(5),rdr.GetString(6));                           }            return id;数据字段 ID         int           OID        varchar(100) 可为空         access     varchar(100) 可为空         User_name  varchar(100) 可为空         Img        varchar(100) 可为空         cards      varchar(100) 可为空         name       varchar(100) 可为空string id="123";ModelInfo    info= SQLServer.info(Int32.Parse(Id));

错误提示:
System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.

求原因 问题已解决 但不知道SqlDataReader为什么不行

[解决办法]
是不是你查询的记录里面没有数据,但是你却读取了,然后就报错了?
最好有If(sdr.read())来判断一下
[解决办法]
探讨

引用:
C# code
if (rdr.Read())

此方法也用了 但还是报一样的错误

[解决办法]
探讨

引用:
引用:

引用:
C# code
if (rdr.Read())

此方法也用了 但还是报一样的错误

我相信ExecuteReader这个方法里你是写了rdr.Read()
你可能读取了NULL值

++ 之前我没想到 一直找不到错 后来没办法 我直接写过了个方法

直接用dataset来读取了

[解决办法]

刚验证了哈
把dr.GetString(1);
换成dr[1].ToString();

C# code
string s1 = dr.GetString(1);string s2 = dr[1].ToString(); 

读书人网 >asp.net

热点推荐