正如标题所说,SqlDataReader无法读取它找到的数据。我在查询特定的表以获取用户名,以便稍后将数据添加到另一个表中。读者找到结果(Reader.HasRows为真),但无法读取它们。这是代码:
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.";
}
答案 0 :(得分:2)
你必须调用Reader.Read()才能进入下一行。
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx
答案 1 :(得分:2)
答案 2 :(得分:2)
我会这样做:
while (Reader.HasRows())
{
Reader.Read();
string ID = Reader["ID"].ToString();
...
}
答案 3 :(得分:1)
使用if (reader.Read())
代替if (Reader.HasRows)
答案 4 :(得分:-1)
呀。你永远不会读。
while(Reader.Read()){ }
而不是If hasrows。
您必须致电Read。像每个教程一样。