- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在网上搜索了一段时间。但是没有找到我的问题的明确答案。在连接到数据库时我应该使用“using”还是我可以直接使用 try-catch-finally?我的意思是:
我不知道是应该在每次完成与数据库的交互时调用 dispose 方法还是直接关闭连接。
static public List<Category> GetAll()
{
List<Category> CategoryList;
try
{
BaseDAO.Dbconn.Open();
BaseDAO.SetCommand(BaseDAO.CommandAction.Read, "SELECT * FROM Categories");
CategoryList = new List<Category>();
using (DbDataReader reader = BaseDAO.Dbcmd.ExecuteReader())
{
while (reader.Read())
{
int ID = reader.GetInt32(reader.GetOrdinal("CategoryID"));
string Name = reader.GetString(reader.GetOrdinal("CategoryName"));
string Description = reader.GetString(reader.GetOrdinal("Description"));
CategoryList.Add(new Category(ID, Name, Description));
}
}
return CategoryList;
}
catch (Exception ex)
{
BaseDAO.Dbconn.Dispose();
throw ex;
}
finally { BaseDAO.Dbconn.Close(); }
}
“Dbconnection”是静态的,不确定这是否也是一个好的解决方案...
我正在了解 ADO,只是想知道此类问题的最佳答案是什么。
最佳答案
这没有任何区别 - 无论您喜欢什么。 using
子句无论如何都会被编译器转换为 try-finally
。
编辑 我刚刚注意到您仅在发生异常时才调用 Dispose。您也应该将它移到 finally 子句中。 Dispose 将调用 Close,因此如果您不想,则无需专门调用它。
进一步编辑 鉴于如您所说,您的 DbConnection 是静态的,那么您不想调用 Dispose,但您确实需要调用 Close。但是,不需要使用静态 DbConnection - 连接池将负责有效地处理连接。您的代码应该每次都创建一个新的连接实例。
关于c# - 使用 "DbConnection"时,我应该使用 "using"还是 try-catch-finally 来使用 DbConnection.close() 关闭连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338072/
我正在将我们的 DAL 更改为 async DAL。 看着: await _conn.OpenAsync().ConfigureAwait(false); 我看到有一个用于打开连接的异步方法。但是为什
这是一个艰难的过程。使用完全相同的查询字符串,完全相同的以下代码: using (var db = new SqlConnection(queryString)) { await db.Open
我在网上搜索了一段时间。但是没有找到我的问题的明确答案。在连接到数据库时我应该使用“using”还是我可以直接使用 try-catch-finally?我的意思是: 我不知道是应该在每次完成与数据库的
要连接到 SQLite 数据库,相当简单:您将驱动程序和路径传递给 SQLite 文件。 其他 DBI - 兼容的数据库后端(PostgreSQL、MySQL 等),您可以传递给 dbConnect
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Close and Dispose - which to call? 我的数据层中的许多函数不受 try-c
我有一个名为 DatabaseHelper 的类,它包装了一个 DbConnection。为 using 语句设置此类的正确方法是什么?我已经实现了 IDisposible,但我不确定应该在何时何地调
我正在研究MySQL数据。我使用 dbConnect 函数连接到数据库并使用 dbReadTable 读取表。 我的问题是:如果我开始使用 tidyr 和 dplyr 等清理数据以使其整洁,这是否会更
我需要在数据库上执行一个存储过程。这是我到目前为止得到的有效方法: protected DbProviderFactory dbProviderFactory; this.dbProviderFact
我计划编写一个可以同时适用于 SQL Server 和 MySQL 的 DataConnection 库。 由于SqlConnection和MySqlConnection都是从DbConnection
我正在尝试连接到用户输入的服务器。当服务器不存在时,我想给最终用户一个快速反馈,以便他可以更正他输入的内容。 有什么方法可以在尝试连接之前测试服务器是否存在? 谢谢 最佳答案 您的 DBConnect
我有一个可以同时从数百个线程访问的单例数据库类。每个线程都有自己的连接。由于我无法控制线程数,所以我需要限制并发连接数。我决定使用如下所示的信号量。现在,连接总是在 using block 中分配,因
这是我从数据库中选择数据的函数: public DataTable SelectDataTable(string selectStatement, string connectionStrin
我正在尝试提高复杂数据库读取操作的性能。我发现一些代码,在有限的测试中,执行速度比以前使用各种技术(包括手动调整的存储过程)的尝试快得多。它使用 Dapper,但 Dapper 并不是主要的关注点。
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我在一个应用程序中找到了这段代码 Database database = DatabaseFactory.CreateDatabase("connection string"); DbConnecti
“EntityConnection 只能用关闭的 DbConnection 构造”这是我在尝试构建提供开放连接的实体连接时遇到的问题。有一个 transactionscope 打开,我不想打开一个新连
当您调用 DbConnection.GetSchema 时,您会为其提供您感兴趣的集合的字符串名称。我在任何地方都找不到集合列表。集合列表是不可变的还是因数据库类型(orcle、sql server
我有一个传递给函数的连接字符串,我需要基于这个字符串创建一个基于 DbConnection 的对象(即 SQLConnection、OracleConnection、OLEDbConnection 等
我正在尝试开始使用 sqlite + C#。我发现 SQLite-lib 不是标准库,因此我在每个引用中添加了它。 由于我更频繁地使用这个类,所以我考虑创建一个自己的类来处理所有事情。 现在,这是我的
我有一个如下所示的单例类,用于访问数据库连接 public class DBConnection { private static volatile DBConnection instance
我是一名优秀的程序员,十分优秀!