标签文本未使用从数据库收集的正确信息进行更新

时间:2016-03-09 17:27:29

标签: c# sql-server tsql

我正在开发一个涉及使用MSSQL恢复数据库的项目。 我使用System.Data.SqlClient命名空间运行所有查询并打开连接。

在我的主窗体上,一旦启动,它将对当前存在的数据库(如果有的话)运行查询,并将从数据库返回一个值并将其显示在标签中。此查询的代码如下:

private void getSNumber() {
     SqlConnection conn = new SqlConnection(getConnectionString());
        string SNumSQL = @"USE MAINDB  
                        SELECT SNumber FROM Information";
        SqlCommand cmd2 = new SqlCommand(SNumSQL, conn);

        conn.Open();

        using (SqlDataReader SNumber = cmd2.ExecuteReader())
        {
            if (SNumber.HasRows)
            {
                while (SNumber.Read())
                {
                    lblSNum.Text = SNumber.GetString(0);
                }
            }
        }
     conn.Close();
     conn.Close();
}

此方法每10秒钟在一个计时器上运行,并且更新正常。 恢复数据库时出现问题。还原数据库将打开一个新表单,其中包含实际进程的所有控件。打开“恢复”对话框时,计时器停止。恢复数据库并再次显示主窗体后,计时器再次启动并检索信息,但不会在标签中正确显示数字。以下是此解释的屏幕截图(省略了敏感信息):

enter image description here

6562 ”是应该显示的值,但不会更新标签本身。

我尝试在计时器中添加this.Refresh();并尝试清除恢复后与数据库的任何连接,并进行了双重检查以确保在执行数据库上的所有任务后关闭并处理所有连接

只有当我完全停止应用程序并重新运行它时,该字段才会更新,所以我想知道我的数据库连接是否存在一些新数据库恢复后无法刷新的内容。

1 个答案:

答案 0 :(得分:0)

在还原对话框出现时删除Timer.Stop();语句解决了问题。没有必要,因为当恢复表单出现时,主窗体在关闭时停止计时器,并在再次显示时正确重启。