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;
}
7 행까지 디버그하면 괜찮지 만 그 후에 dr은 예외를 발생시킵니다.
Invalid attempt to read when no data is present.
던집니다. 사용자 이름 = sumant 인 테이블에 데이터가 있으므로 불가능합니다. ‘if’문구가 맞는지 알려주세요 ………
그리고 어떻게 오류를 제거합니까 ??
답변
DataReader.Read
결과를 가져 오려면 호출 해야합니다.
SqlDataReader dr = cmd10.ExecuteReader();
if (dr.Read())
{
// read data for first record here
}
DataReader.Read()
bool
읽을 데이터 블록이 더 있는지 여부를 나타내는를 반환 하므로 결과가 2 개 이상이면 다음을 수행 할 수 있습니다.
while (dr.Read())
{
// read data for each record here
}
답변
dr.Read()
데이터를 읽기 전에 호출 해야합니다. 읽을 것이 없으면이 메서드는 false를 반환합니다.
답변
이 오류가 발생했습니다 . dr.NextResult()
대신 dr.Read()
.
답변
SqlDataReader에 먼저 반환 된 행이 있는지 확인합니다.
SqlDataReader dr = cmd10.ExecuteReader();
if (dr.HasRows)
{
...
}
답변
나는 아래 코드를 사용했고 그것은 나를 위해 일했습니다.
String email="";
SqlDataReader reader=cmd.ExecuteReader();
if(reader.Read()){
email=reader["Email"].ToString();
}
String To=email;
답변
null 값을 포함 할 수있는 2 개의 값이 있습니다.
while(dr.Read())
{
Id = dr["Id"] as int? ?? default(int?);
Alt = dr["Alt"].ToString() as string ?? default(string);
Name = dr["Name"].ToString()
}
문제를 해결했습니다.