【发布时间】:2014-04-19 19:04:11
【问题描述】:
使用 C# 和 Oracle.ManagedDataAccess.Client 测试数据库连接的最佳方法是什么?
我应该在每个conn.Open() 之前测试一下服务器是否可以访问,还是应该在第一次运行时进行一次测试?
我的主要问题是:如果数据库服务器离线,我在网页上得到一个异常,这不是与用户交互的最佳方式。
如果无法建立连接,如何显示错误页面?
示例数据访问层方法:
public bool IsEmailAddressExisting(string emailAddr)
{
using (OracleConnection conn = new OracleConnection(BasicConnection.connectionStringOracle))
using (OracleCommand command = conn.CreateCommand())
{
conn.Open();
command.CommandText = "SELECT id FROM Users WHERE email=:emailAddr";
command.Parameters.Add(":emailAddr", OracleDbType.Varchar2).Value = emailAddr;
var result = command.ExecuteScalar();
return (result != null);
}
}
注意:我不想在每个方法的连接上都使用 try-catch。
我发现this 的回答非常有用。
【问题讨论】:
-
你为什么不想使用
try-catch,因为在你的捕获中你可以重定向到另一个页面或显示一条消息 -
使用 try-catch 来管理控制流是一个糟糕的设计。
-
如果您使用
try-catch来实际处理异常,例如当数据库关闭时,那么这些不 用于control flow。 -
真的很糟糕的设计?他们是为了这个案子。
-
会有很多 try-catch 块。
标签: c# database error-handling odp.net