- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有内存泄漏,由于没有正确关闭连接。这是由于使用全局函数访问数据库(使用不同的 sql 字符串),但我传回了一个 sqldatareader。 我无法在方法中关闭它,也无法关闭与数据库的连接,因为它会关闭对数据的访问!而且它无法从该方法外部正确关闭。 :(
有什么方法可以获取所需的表,sqldatareader 授予离线访问权限。这样我就可以关闭所有连接,但仍然可以访问该表。
请注意,返回的表不同,因此存在不同的字段。我不想每次尝试连接时都必须重复代码。
private SqlDataReader OpenDataStream(String sql)
{
SqlCommand sqlComm = new SqlCommand();
sqlComm.Connection = new SqlConnection();
sqlComm.Connection.ConnectionString = @"Myconnectionstring";
sqlComm.CommandText = sql;
sqlComm.Connection.Open();
SqlDataReader data = null;
data = sqlComm.ExecuteReader();
return data;
// Closing data here, or connection, results in returned object inaccessable.
}
或者可能是在方法之外(在我访问了我需要的内容之后)将其全部关闭的有效工作方式?
最佳答案
您可以只返回一个 DataTable
而不是 SqlDataReader
。这将用您的数据填充表,您可以在方法结束执行之前关闭连接。
private DataTable GetDataTable(String sql)
{
SqlDataAdapter da = new SqlDataAdapter(sql, connection);
DataSet ds = new DataSet();
da.Fill(ds);
return ds.Tables[0];
}
This可能值得一读。
关于C# 如何使我的 sqlDataReader 脱机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7913461/
我有内存泄漏,由于没有正确关闭连接。这是由于使用全局函数访问数据库(使用不同的 sql 字符串),但我传回了一个 sqldatareader。 我无法在方法中关闭它,也无法关闭与数据库的连接,因为它会
我正在尝试在脱机模式下使用yarn,因为我正在使用的生成服务器无法访问yarn注册表或github.com。 我在脱机模式下找到如何使用yarn的过程中找到了这个article,该效果很好,直到添加了
重置工作区 很多时候不小心将面板弄乱了,那么怎么办呢? ,我么可以先自己搞一个喜欢的工作区,然后另存为当前工作区 下图是我调整好的工作区 如果不小心搞乱了,那么别关软件而是,重置工作区为初始状态 如果
我正在使用 USB 转 RS232 电缆在两台 Linux 机器之间进行通信。在连接了 USB 端的机器上,我运行: dmesg | grep tty 并得到如下输出: console [tty0]
Azure 应用服务部署任务在“其他部署选项:使应用程序脱机”下有一个用于使应用程序脱机的复选框。如果我检查是否足以让APP离线?如何自动执行添加 app_offline.htm 的过程? 使应用程序
Azure 应用服务部署任务在“其他部署选项:使应用程序脱机”下有一个用于使应用程序脱机的复选框。如果我检查是否足以让APP离线?如何自动执行添加 app_offline.htm 的过程? 使应用程序
我是一名优秀的程序员,十分优秀!