即使找到了某些内容,SqlDataReader也无法读取数据

时间:2016-05-05 14:22:44

标签: c# asp.net .net sql-server

正如标题所说,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.";
}

5 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您需要在阅读器上调用Read方法。

例如

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

MSDN中的更多信息。

答案 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。像每个教程一样。