C# 处理同时连接到数据库两次
我正在使用一个计时器,它会每隔1ms连接一次数据库,有时它会在前一个连接关闭之前连接到数据库,这会导致问题 有办法解决这个问题吗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
` 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返回一个枚举,其中包含打开、获取、执行、连接、关闭和断开的枚举。请参阅