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(); 展开
开始时候程序是这样的
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(); 展开
7个回答
展开全部
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字段是否为空
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字段是否为空
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
少读一个数据的原因是,程序中if语句多判断了一次。
reader.Read()方法是让reader读取下一条数据,有数据则返回true,否则返回false。
程序中if让reader读取第一条,while中又让reader下移一条,导致第一条数据就丢失了。
因此只要while (reader.Read())就可以了,外层不用if再判断一次。
如果需要判断reader是否有数据,好像有一个HasRows属性,或者是其他的名字。
reader.Read()方法是让reader读取下一条数据,有数据则返回true,否则返回false。
程序中if让reader读取第一条,while中又让reader下移一条,导致第一条数据就丢失了。
因此只要while (reader.Read())就可以了,外层不用if再判断一次。
如果需要判断reader是否有数据,好像有一个HasRows属性,或者是其他的名字。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般是用Read方法判断
比如:
while(dataReader .Read()){
// 处理当前记录
}
上面这样不可能漏读记录的
比如:
while(dataReader .Read()){
// 处理当前记录
}
上面这样不可能漏读记录的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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){ //..}
if (reader.Read())
{
UserRole userRole = new UserRole();
userRole.Id = (int)reader["Id"];
userRole.Name = (string)reader["Name"];
reader.Close();
return userRole;
}
调用的时候去判断 if(userRole == null){ //..}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询