none
C# 如何快速判断出数据库连接是否正确 RRS feed

  • 问题

  • 有没有好的方法可以快速的判断出一个数据库连接字符串是否合法?我在程序中是用

    try

    {

        conn.Open()

    } catch

    {

        MessageBox.Show("连接失败");

    }

    判断的,但是等到catch到连接异常要等很长时间(十多秒),有没有好的方法可以在至多5秒内判断出来一个连接字符串是正确的?

    2010年9月30日 2:10

答案

  • 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());

    }

     

     

    • 已建议为答案 gsralex 2010年10月3日 9:58
    • 已标记为答案 Mog Liang 2010年10月7日 8:36
    2010年10月3日 9:20

全部回复

  • try
    {
          if(   Sqlcmd.Connection.State   !=   ConnectionState.Open)
          Sqlcmd.Connection.Open();
          MessageBox.Show( "数据接接成功! ");
    }
    catch     (Exception   ex)
    {
          MessageBox.Show(ex.ToString());
    }
    http://blog.csdn.net/zx13525079024
    2010年9月30日 2:38
  • 你在此处抓取的catch是有很多的,而且获取的catch也不一定是连接字符串出错引起的。包括:

    InvalidOperationExceptionSqlExceptionArgumentException等引起的异常。

    1)你若仅仅需要判断是否连接成功,而不考虑其原因的话,可使用开心所说的那种,即用conn的openstate来进行判断,这样会快些;

    2)你若想要“判断出来一个连接字符串是正确”,可在catch异常的时候仅仅catch ArgumentException这个异常。

    关于这几个异常,见msdn:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.open.aspx

    希望对你有帮助!

    2010年9月30日 2:52
  • 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());

    }

     

     

    • 已建议为答案 gsralex 2010年10月3日 9:58
    • 已标记为答案 Mog Liang 2010年10月7日 8:36
    2010年10月3日 9:20
  • 既然你要判断的是字符串的有效性,这其实不难实现呀!貌似用个正则表达式就可以很好的处理吧!

    2010年10月10日 14:10