2016-05-05 5 views
0

タイトルによれば、SqlDataReaderは見つかったデータを読み取ることができません。私は後で別のテーブルにデータを追加するために使用するために、特定のテーブルにユーザ名を問い合わせています。読者は結果を見つけますが(Reader.HasRowsは真です)、読めません。これはコードですSqlDataReaderが何かを見つけたとしてもデータを読み取ることができません

Connection.Open(); 
Command = new SqlCommand("SELECT ID FROM Users WHERE Username = @Username", Connection); 
Command.Parameters.Add("@Username", TextBox1.Text); 
SqlDataReader Reader = Command.ExecuteReader(); 

if (Reader.HasRows) 
{ 
    var ID = Reader[0]; 
    Reader.Close(); 
    Command = new SqlCommand("INSERT INTO Locations (User_ID,Location,Date) VALUES (@User_ID,@Location,GETDATE())", Connection); 
    Command.Parameters.Add("@User_ID", ID); 
    Command.Parameters.Add("@Location", TextBox2.Text); 
    Command.ExecuteNonQuery(); 
} 
else 
{ 
    ErrorLabel.Text = "Username could not be found."; 
} 

答えて

-1

うん。あなたは決して読まない。

(Reader.Read()){}

一方の代わりhasrows場合。

Readを呼び出す必要があります。チュートリアルのように。

1

利用if (reader.Read())代わりのif (Reader.HasRows)

2

あなたがリーダーにReadメソッドを呼び出す必要があります。

例えば、

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

さらに詳しい情報はMSDNです。

2

私はこれを行うだろう:

while (Reader.HasRows())  
{   
    Reader.Read(); 
    string ID = Reader["ID"].ToString(); 
    ... 
} 
関連する問題