gpt4 book ai didi

c# - 来电者完成连接后,我如何关闭连接?

转载 作者:太空狗 更新时间:2023-10-30 00:03:26 26 4
gpt4 key购买 nike


我创建了以下方法:

 public System.Data.OleDb.OleDbDataReader GetReader(string sqlQuery)
{

System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection();
LoadConnectionStrings();
myConnection.ConnectionString = ConnectionString;
myConnection.Open();
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(sqlQuery, myConnection);
System.Data.OleDb.OleDbDataReader myReader = null;
myReader = myCommand.ExecuteReader();

return myReader;

}

几千行代码都依赖于它,我想我实现它的时候并没有真正思考......

无论如何,。如果我以这种方式检索读取器,我将无法关闭连接,并且如果我在读取器调用 read() 方法之前关闭连接,它将在读取时爆炸并说需要与数据库的连接开放。

问题是,如何关闭与之前代码体的连接?或者一般来说所有连接都可能......

从我读到的here如果您不专门调用“close()”,它就不会关闭,如果您使用的是 access 2003 文件,它会让您陷入痛苦的世界

最佳答案

在这种情况下,连接需要保持打开状态才能让阅读器工作 - 但是,ExecuteReader 有一个重载,它允许您为阅读器指定一个标志以在阅读器关闭时关闭连接:

myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

这允许调用者使用:

using(var reader = GetReader(query)) {
//...
}

当调用者与阅读器完成连接时,连接将干净地关闭。

关于c# - 来电者完成连接后,我如何关闭连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com