4 c# database oledb connection
我创建了以下方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
几千行代码依赖它,我想我实际上并没有真正思考它......
无论如何,.如果我以这种方式检索一个阅读器我无法关闭连接,如果我在读者调用read()方法之前关闭连接,它会在读取时爆炸并说出与数据库的连接需要要开放.
问题是,如何从以前的代码体中关闭连接?或者所有连接一般都可能..
从我在这里读到的,如果你没有专门调用'close()'它就不会被关闭,如果你正在使用访问2003文件,它会让你处于一个受伤的世界
Mar*_*ell 12
在这种情况下,连接需要保持打开状态以便阅读器工作 - 但是,ExecuteReader存在一个过载,允许您为阅读器指定一个标志,以便在阅读器关闭时关闭连接:
myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
Run Code Online (Sandbox Code Playgroud)
这允许调用者使用:
using(var reader = GetReader(query)) {
//...
}
Run Code Online (Sandbox Code Playgroud)
当呼叫者完成阅读器时,连接将完全关闭.
归档时间: |
|
查看次数: |
1069 次 |
最近记录: |