C# 数据库中想判断是否读取到数据怎么办?

现在做了一个程序,在读取数据库的时候想判断一下是否能够读取到数据库中的数据,开始的时候用的是dataReader.Read()判断的,不过每次读取都少了一个数据。怎么样才... 现在做了一个程序,在读取数据库的时候想判断一下是否能够读取到数据库中的数据,开始的时候用的是dataReader .Read()判断的,不过每次读取都少了一个数据。怎么样才能正常判断之后正常读取呢?
开始时候程序是这样的
string selectStr = "select * from [table] where username= 'name'";
SqlConnection conn = new SqlConnection(connStr);
SqlCommand comm = new SqlCommand(selectStr, conn);
object[] data = new object[12];
conn.Open();
SqlDataReader reader = comm.ExecuteReader();

if (reader.Read())
{
while (reader.Read())
{
reader.GetValues(data);
dataGridView1.Rows.Add(data);
}
}
conn.Close();
展开
 我来答
我就这我么戆
2010-11-16 · TA获得超过1万个赞
知道大有可为答主
回答量:1713
采纳率:0%
帮助的人:3690万
展开全部
在执行数据库查询后,读取结果的时候没有判断结果集指针是否越界。
比如只查出一条数据,结果你就读两次结果,读的时候指针是会向下走,读一条,就指到下一条。
结果集第一条数据的前边一条是BOF,B就是Begin的首字母,最后一条的后边是EOF。
结果集查回来,指针通常指向BOF,如果你写arr["字段名"]就会出错,应该先读一次,并且读的时候要判断是否读取成功,如果结果集为空,读的时候就会从BOF直接指向EOF,这样读取会失败。
xiangjuan314
2016-02-16 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2780万
展开全部
1 通过System.DBNull判断
DataTable dt; //假设字段为name, dt已经保存了数据
dt.rows[0]["name"] == System.DBNull.Value; //判断第一行数据的name字段是否为空

2 通过IsNull判断
DataTable dt; //假设字段为name, dt已经保存了数据
dt.rows[0].IsNull("name"); //判断第一行数据的name字段是否为空

3 通过ToString() 判断
DataTable dt; //假设字段为name, dt已经保存了数据
dt.rows[0]["name"].ToString() == ""; //判断第一行数据的name字段是否为空
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
vampire_c
2010-11-03 · TA获得超过735个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:480万
展开全部
少读一个数据的原因是,程序中if语句多判断了一次。
reader.Read()方法是让reader读取下一条数据,有数据则返回true,否则返回false。
程序中if让reader读取第一条,while中又让reader下移一条,导致第一条数据就丢失了。
因此只要while (reader.Read())就可以了,外层不用if再判断一次。

如果需要判断reader是否有数据,好像有一个HasRows属性,或者是其他的名字。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
2010-11-03 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5426万
展开全部
一般是用Read方法判断
比如:
while(dataReader .Read()){
// 处理当前记录
}
上面这样不可能漏读记录的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沐成益03U
2010-11-03 · 超过11用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:33.5万
展开全部
SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@Id", id));
if (reader.Read())
{
UserRole userRole = new UserRole();

userRole.Id = (int)reader["Id"];
userRole.Name = (string)reader["Name"];

reader.Close();

return userRole;
}
调用的时候去判断 if(userRole == null){ //..}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式