C# 不存在数据时读取的尝试无效
当我调试到第7行时,它是正常的,但在那之后,C# 不存在数据时读取的尝试无效,c#,ado.net,sqldatareader,C#,Ado.net,Sqldatareader,当我调试到第7行时,它是正常的,但在那之后,dr抛出一个异常: 当不存在数据时尝试读取无效 我不明白为什么会出现这种异常,因为表中确实有username=sumant的数据 请告诉我“如果”陈述是否正确。如何修复错误?在尝试读取任何数据之前,必须调用dr.Read()。如果没有要读取的内容,该方法将返回false。您必须调用以获取结果: private void button1_Click(object sender, EventArgs e) { string
dr
抛出一个异常:
当不存在数据时尝试读取无效
我不明白为什么会出现这种异常,因为表中确实有username=sumant的数据
请告诉我“如果”陈述是否正确。如何修复错误?在尝试读取任何数据之前,必须调用
dr.Read()
。如果没有要读取的内容,该方法将返回false。您必须调用以获取结果:
private void button1_Click(object sender, EventArgs e)
{
string name;
name = textBox5.Text;
SqlConnection con10 = new SqlConnection("con strn");
SqlCommand cmd10 = new SqlCommand("select * from sumant where username=@name");
cmd10.Parameters.AddWithValue("@name",name);
cmd10.Connection = con10;
cmd10.Connection.Open();//line 7
SqlDataReader dr = cmd10.ExecuteReader();
}
if ( textBox2.Text == dr[2].ToString())
{
//do something;
}
DataReader.Read()
返回一个bool
,指示是否有更多的数据块要读取,因此如果有多个结果,可以执行以下操作:
SqlDataReader dr = cmd10.ExecuteReader();
if (dr.Read())
{
// read data for first record here
}
我将检查SqlDataReader是否首先返回了行:
while (dr.Read())
{
// read data for each record here
}
我刚刚遇到这个错误,我调用的是
dr.NextResult()
,而不是dr.Read()
,我使用了下面的代码,它对我有效
SqlDataReader dr = cmd10.ExecuteReader();
if (dr.HasRows)
{
...
}
我有两个可能包含空值的值
String email="";
SqlDataReader reader=cmd.ExecuteReader();
if(reader.Read()){
email=reader["Email"].ToString();
}
String To=email;
解决了问题除此之外,您可能希望使用dr.IsBDNull(0)
“您必须调用DataReader.Read来获取结果:”
一看到这一点,我马上就会说,“哦!耶!我没有调用.Read()”。你知道,我已经做了35年了。你会想。。。。。。。。。。。lolin在我的例子中,我有这个,尽管我在其他地方使用过这个,在这个产生这个错误的特定场景中,这并没有阻止错误冒泡。我的查询结果有行,但读取器没有数据。我真的不明白发生了什么事。我自己验证了查询和参数。
while(dr.Read())
{
Id = dr["Id"] as int? ?? default(int?);
Alt = dr["Alt"].ToString() as string ?? default(string);
Name = dr["Name"].ToString()
}