尽管有效的查询和连接,HasRows仍为空

时间:2017-09-22 00:08:16

标签: c# sql .net

出于某种原因,尽管连接和查询看起来有效,但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;
                }
            }
        }
    }
}

2 个答案:

答案 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)

断开然后重新连接到数据库并打开数据查看器并显示我的更改。我正在使用Visual Studio 2017。

刷新数据库并刷新数据查看器什么也没做。

顺便提一下,它仍然没有同步(见下文),我必须继续连接/重新连接以查看更改。我将使用不同的编辑器。

在重新连接之前(includeSubFolders字段显示在左侧,而不是右侧):

What I had

重新连接后:

What I thought I had