如果reader.read!= Null则出错 [英] Error if reader.read !=Null

查看:242
本文介绍了如果reader.read!= Null则出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何捕获空读者。读取异常?

  private   void  KlantenContactInfo()
{
const string queryKlantContactinfoID = SELECT Naam,Telefoonnummer,Mobiel,Mail FROM KlantenContact WHERE IDKlantContactpersonen = @SELKlantcontactinfoID ;

使用(SqlConnection connection = new SqlConnection(connectionstring))
使用(SqlCommand command = new SqlCommand(queryKlantContactinfoID,connection))
{
if (ListBoxKlanten.Items.Count == 0
{
command .Parameters.AddWithValue( @ SELKlantcontactinfoID,DBNull.Value);
}
else
{
command.Parameters.AddWithValue( @ SELKlantcontactinfoID,listBoxKlantenContact.SelectedValue);
}

connection.Open();
使用(SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleResult | CommandBehavior.SingleRow))
{
< span class =code-comment> // 帮助
如果( reader.Read())
{
LB_KlantenContactNaam.Text = Convert.ToString(reader [ NAAM]);
LB_KlantenContactTelefoon.Text = Convert.ToString(reader [ Telefoonnummer]);
LB_KlantenContactMobiel.Text = Convert.ToString(reader [ Mobiel]);
LB_KlantenContactMail.Text = Convert.ToString(reader [ Mail]);
}
}
}
}

解决方案

您的测试:

  if (ListBoxKlanten.Items.Count ==  0 

是不够的。

在这种情况下,显然 listBoxKlantenContact 有值,但没有选择,所以 listBoxKlantenContact.SelectedValue 为空。



尝试使用

 command.Parameters.AddWithValue(  @ SELKlantcontactinfoID,listBoxKlantenContact.SelectedValue ?? DBNull.Value); 


< blockquote>尝试

  while (reader.Read()){
// ...
}



代替

  if (reader.Read()){
// ...
}



希望这会有所帮助。


尝试

  if (读者) .HasRows)
{
reader.Read();
// ...
}





或者,四舍五入的方式

  //  在SqlDataReader中使用块 
使用(DataTable results = new DataTable())
{
results.Load(reader);
if (results.Rows.Count > 0
{
// 将结果映射到您的字段
}
}


How do I catch an empty reader.read an exception?

private void KlantenContactInfo()
{
    const string queryKlantContactinfoID = "SELECT Naam, Telefoonnummer, Mobiel, Mail FROM KlantenContact WHERE IDKlantContactpersonen = @SELKlantcontactinfoID";

    using (SqlConnection connection = new SqlConnection(connectionstring))
    using (SqlCommand command = new SqlCommand(queryKlantContactinfoID, connection))
    {
        if (ListBoxKlanten.Items.Count == 0)
        {
            command.Parameters.AddWithValue("@SELKlantcontactinfoID", DBNull.Value);
        }
        else
        {
            command.Parameters.AddWithValue("@SELKlantcontactinfoID", listBoxKlantenContact.SelectedValue);
        }

        connection.Open();
        using (SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection | CommandBehavior.SingleResult | CommandBehavior.SingleRow))
        {
            //HELP
            if (reader.Read())
            {
                LB_KlantenContactNaam.Text = Convert.ToString(reader["Naam"]);
                LB_KlantenContactTelefoon.Text = Convert.ToString(reader["Telefoonnummer"]);
                LB_KlantenContactMobiel.Text = Convert.ToString(reader["Mobiel"]);
                LB_KlantenContactMail.Text = Convert.ToString(reader["Mail"]);
            }
        }
    }
}

解决方案

Your test:

if (ListBoxKlanten.Items.Count == 0)

is insufficient.
In this case it's apparent that listBoxKlantenContact has values, but none is selected so listBoxKlantenContact.SelectedValue is null.

Try using

command.Parameters.AddWithValue("@SELKlantcontactinfoID", listBoxKlantenContact.SelectedValue ?? DBNull.Value);


Try

while (reader.Read()) {
   // ...
}


instead of

if (reader.Read()) {
   // ...
}


Hope this helps.


Try

if (reader.HasRows)
{
  reader.Read();
  //...
}



Or, the round-about way

// In the SqlDataReader using block
using (DataTable results = new DataTable())
{
  results.Load(reader);
  if (results.Rows.Count > 0)
  {
    // map results to your fields
  }
}


这篇关于如果reader.read!= Null则出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆