Вы вызываете reader2.Read();
дважды - один раз в while
l oop, один раз чуть ниже:
while (reader2.Read())
{
reader2.Read(); // <=== WHY call .Read() a second time ?!?!!?!
LocTb.Text = (reader2["Location"].ToString());
DateTb.Text = (reader2["Date"].ToString());
MessTb.Text = (reader2["Message"].ToString());
}
Это и не нужно, и может привести к тому, что результаты не будут возвращены.
Если ваш запрос возвращает только одну строку, .Read()
в while
l oop прочитает эту строку и вернет ее, но затем следующая строка сделает еще одну Read()
, которая не вернет любые данные (поскольку первая и единственная строка уже прочитана).
Просто удалите этот ненужный второй вызов .Read()
, и я уверен, что ваши данные начнут появляться!
И исправьте это явное SQL внедрение - используйте параметризованные запросы! , как следует всегда делайте в любом случае!
string selectSql = "SELECT Location, Date, Message FROM EntryLogs WHERE ID = @Id;";
SqlCommand com = new SqlCommand(selectSql, con);
com.Parameters.Add("@Id", SqlDbType.Int).Value = Convert.ToInt32(index);
try
{
con.Open();
using (SqlDataReader reader2 = com.ExecuteReader())
{
while (reader2.Read())
{
// REMOVE THIS reader2.Read();
LocTb.Text = (reader2["Location"].ToString());
DateTb.Text = (reader2["Date"].ToString());
MessTb.Text = (reader2["Message"].ToString());
}
reader2.Close();
reader2.Dispose();
}
}
finally
{
con.Close();
}