如何检查SQLDataReader是否没有行
我试图弄清楚如何检查我的SqlDataReader
是否为空或没有行(意味着保留不存在),然后显示一个消息框。 出于某种原因,当我调试一次它遇到While dr.Read())
代码时,如果它没有返回结果,它While dr.Read())
。
我已经尝试将此代码放在几个不同的位置,但如果没有返回任何记录,似乎都没有触发消息框
if (dr.GetValue(0) == DBNull.Value || !dr.HasRows) { MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { (read records) }
我的代码……
try { using (SqlConnection con = new SqlConnection(connectionString)) { using (SqlCommand cmd = con.CreateCommand()) { con.Open(); cmd.CommandText = "usp_StoredProcedureName"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@regnum", regnumber); using (SqlDataReader dr = cmd.ExecuteReader()) { //Loop through all the rows, retrieving the columns you need. while (dr.Read()) { lblConf.Text = dr.GetValue(0).ToString(); lblName.Text = dr.GetValue(1).ToString() + "," + dr.GetValue(2); lblCompany.Text = dr.GetValue(3).ToString(); lblStatus.Text = dr.GetValue(4).ToString(); } } } } } catch (Exception ex) { MessageBox.Show("Can not open connection! "); }
if(dr.HasRows) { // .... } else { MessageBox.Show("Reservation Number Does Not Exist","Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }
SqlDataReader.HasRows属性
将其添加到您的代码中以检查:
sqlCommand cmd = new sqlCommand(); SqlDataReader dr = cmd.ExecuteReader(); if(dr.HasRows) { while(dr.Read()) { //code } }
HasRows
属性可能对您有所帮助。
适当的价值
类型:System.Boolean如果SqlDataReader包含一行或多行,则为true;否则为false。 否则是假的。
出于某种原因,当我调试一次它遇到
while dr.Read()
代码时,如果它没有返回结果,它while dr.Read()
我认为你在这里看到的是SQLDataReader.Read()
如果没有下一个,则返回false
,或者在这种情况下是第一个要读取的记录。
在其他人已响应时,使用HasRows
属性确定结果集中是否有任何行。 根据您需要完成的任务,您可能希望利用Read()
在第一次调用空结果集时返回false
的事实。
上述就是C#学习教程:如何检查SQLDataReader是否没有行分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029329.html