出于某种原因,尽管连接和查询看起来有效,但HasRows仍然是假的。表中有记录。
打开连接时没有错误,所以我认为它是有效的。
我不明白为什么HasRows会是假的。
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Projects\app\app.mdf;Integrated Security=True;Connect Timeout=30";
string sql = @"SELECT * from SavedSettings";
using (var con = new SqlConnection(connectionString))
using (var cmd = new SqlCommand(sql, con))
{
con.Open();
using (var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
if (reader["ignoreCase"].ToString() == "1")
{
ignoreCase.Checked = true;
}
else
{
ignoreCase.Checked = false;
}
}
}
}
}
答案 0 :(得分:1)
永远不要相信HasRows
。有时它有数据但返回false
。自推出以来,它有点不稳定。试试这个:
DataTable dt=new DataTable();
dt.Load(cmd.ExecuteReader());
if (dt.Rows.Count > 0)
{
// Has rows.
}
else {
// No row.
}
或您甚至不需要再检查if (reader.HasRows)
。如果您的表没有行,那么程序将绕过while (reader.Read())
没有问题。只需使用:
while (reader.Read())
{
if (reader["ignoreCase"].ToString() == "1")
{
ignoreCase.Checked = true;
}
else
{
ignoreCase.Checked = false;
}
}
最后,重新启动Visual Studio并重新连接到数据库,然后选择Show Table Data。
答案 1 :(得分:0)