积极答复者
C# 如何快速判断出数据库连接是否正确

问题
-
有没有好的方法可以快速的判断出一个数据库连接字符串是否合法?我在程序中是用
try
{
conn.Open()
} catch
{
MessageBox.Show("连接失败");
}
判断的,但是等到catch到连接异常要等很长时间(十多秒),有没有好的方法可以在至多5秒内判断出来一个连接字符串是正确的?
- 已移动 Sheng Jiang 蒋晟Moderator 2010年9月30日 3:13 (发件人:Visual C#)
答案
-
try
{
if(conn.State!=ConnectionState.Open)
conn.Open();
}
catch(Exception e)
{
throw e.toString();
}
如果不想直接抛出异常,可以换其他方式输出
try
{
if(conn.State!=ConnectionState.Open)
conn.Open();
}
catch(Exception e)
{
throw e.toString();
// Response.Write("数据库连接失败,原因"+e.toString());
}
全部回复
-
你在此处抓取的catch是有很多的,而且获取的catch也不一定是连接字符串出错引起的。包括:
InvalidOperationException, SqlException, ArgumentException等引起的异常。
1)你若仅仅需要判断是否连接成功,而不考虑其原因的话,可使用开心所说的那种,即用conn的openstate来进行判断,这样会快些;
2)你若想要“判断出来一个连接字符串是正确”,可在catch异常的时候仅仅catch ArgumentException这个异常。
关于这几个异常,见msdn:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open.aspx
希望对你有帮助!
-
try
{
if(conn.State!=ConnectionState.Open)
conn.Open();
}
catch(Exception e)
{
throw e.toString();
}
如果不想直接抛出异常,可以换其他方式输出
try
{
if(conn.State!=ConnectionState.Open)
conn.Open();
}
catch(Exception e)
{
throw e.toString();
// Response.Write("数据库连接失败,原因"+e.toString());
}