如果reader.read!= Null则出错 [英] Error if reader.read !=Null
本文介绍了如果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 thatlistBoxKlantenContact
has values, but none is selected solistBoxKlantenContact.SelectedValue
is null.
Try usingcommand.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屋!
查看全文