반응형
데이터가 없을 때 잘못된 읽기 시도
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()
}
문제를 해결했습니다.
참고 URL : https://stackoverflow.com/questions/1147615/invalid-attempt-to-read-when-no-data-is-present
반응형
'programing' 카테고리의 다른 글
sizeof (unsigned double)가 4와 같은 이유는 무엇입니까? (0) | 2020.10.28 |
---|---|
Scala의 액터는 Go의 코 루틴과 비슷합니까? (0) | 2020.10.28 |
C # ASP.NET에서 전체 쿼리 문자열 가져 오기 (0) | 2020.10.28 |
Android에서 현재 활동을 완료하는 방법 (0) | 2020.10.28 |
열과 방향이 지정된 DataTable을 어떻게 정렬합니까? (0) | 2020.10.28 |