Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理同时连接到数据库两次_C#_Oledbconnection - Fatal编程技术网

C# 处理同时连接到数据库两次

C# 处理同时连接到数据库两次,c#,oledbconnection,C#,Oledbconnection,我正在使用一个计时器,它会每隔1ms连接一次数据库,有时它会在前一个连接关闭之前连接到数据库,这会导致问题 有办法解决这个问题吗 ` protected void timerTest_tick(object sen, EventArgs e) { string sql = "SELECT * FROM [TableActions] WHERE ID =" + Session["LobbyID"]; Connection cn = new Co

我正在使用一个计时器,它会每隔1ms连接一次数据库,有时它会在前一个连接关闭之前连接到数据库,这会导致问题

有办法解决这个问题吗

` protected void timerTest_tick(object sen, EventArgs e)
   {
            string sql = "SELECT * FROM [TableActions] WHERE ID =" + Session["LobbyID"];
            Connection cn = new Connection();
            OleDbDataReader reader = cn.GetReader(sql);
            if (reader.Read())
            {
                Session["GNACode"] = reader.GetString(2);
            }
            cn.closecon();
    }`
您应该移动连接cn=新连接;分类范围

移动cn.closecon;形成结束事件

public class YourForm{
   private static Connection cn = null;
   YourForm(){
     if (cn == null) 
     {
       instance = new Connection();
     }
   }
   protected void timerTest_tick(object sen, EventArgs e)
   {
            string sql = "SELECT * FROM [TableActions] WHERE ID =" + Session["LobbyID"];

            OleDbDataReader reader = cn.GetReader(sql);
            if (reader.Read())
            {
                Session["GNACode"] = reader.GetString(2);
            }

    }

    private void CloseEvent(){
       cn.closecon();
    }
}

将连接实例移出方法以防止在每次计时器调用中创建它,即创建一个类或在父类中使用连接实例。然后,您可以在连接前使用state属性检查连接状态。请参阅OleDbConnection.state并在读取查询后关闭它


另一个肮脏的方法是用try包装代码块。。。catch语句。

有什么问题吗?问题是它可能会导致一个连接在另一个连接关闭之前打开,而当这个连接关闭时,我收到一个错误。您能告诉我错误是什么吗?OleDbConnection会自动池连接,因此打开多个连接应该不是问题。我几乎想知道在connection或其他东西中是否有一个静态connection对象。可以包含connection中的相关代码吗?我的connection类使用这样的方法:Wait,所以通过这种方法连接总是打开的,直到用户离开页面为止?好的,我真的没有想到这一点。谢谢在使用分步调试程序之后,我注意到每1秒timertest的间隔,line private Connection cn=new Connection;这正是我们想要摆脱的。有办法处理吗?所以NightPhase是我页面的名称,在添加您添加的行时,我收到以下错误消息:NightPhase.NightPhase'由于其保护级别而无法访问。下面是这些行和错误的屏幕截图,如果有帮助的话:顺便说一句,感谢您的帮助OleDbConnection.State返回的值是什么?请参阅Microsoft文档,ist返回一个枚举,其中包含打开、获取、执行、连接、关闭和断开的枚举。请参阅