Jit*_*wat 2 .net c# ado.net connection-string sql-server-2008
我必须保存数据,我必须先测试连接才能保存.如何测试此连接字符串对特定连接是否有效?
我的代码是这样的:
static public bool TestConnString(string connectionString)
{
bool returnVal = true;
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
if (conn.State != ConnectionState.Open)
returnVal = false;
else
returnVal = true;
}
catch (Exception ex)
{
returnVal = false;
}
}
return returnVal;
}
Run Code Online (Sandbox Code Playgroud)
连接字符串是:
Data Source=testSvr03\SQLEXPRESS;Initial Catalog=Test; Connection Timeout=600; Persist Security Info=True;User ID=Test; password=test
Run Code Online (Sandbox Code Playgroud)
如果我在连接字符串中给出错误的数据源,那么在conn.open()之后它永远不会在这个函数中返回.我把catch块但是它进来了
谁能告诉我什么是解决方案?
Tim*_*ter 10
您可以让SqlConnectionStringBuilder构造函数检查它:
bool isValidConnectionString = true;
try{
var con = new SqlConnectionStringBuilder("ABC");
}catch(Exception)
{
// can be KeyNotFoundException, FormatException, ArgumentException
isValidConnectionString = false;
}
Run Code Online (Sandbox Code Playgroud)
下面是一个概述的ConnectionStringBuilders为不同数据提供者:
Provider ConnectionStringBuilder
System.Data.SqlClient System.Data.SqlClient.SqlConnectionStringBuilder
System.Data.OleDb System.Data.OleDb.OleDbConnectionStringBuilder
System.Data.Odbc System.Data.Odbc.OdbcConnectionStringBuilder
System.Data.OracleClient System.Data.OracleClient.OracleConnectionStringBuilder
Run Code Online (Sandbox Code Playgroud)
您可以将return语句放在catch块中,就像这样
static bool TestConnectionString(string connectionString)
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
try
{
conn.Open();
return (conn.State == ConnectionState.Open);
}
catch
{
return false;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我刚试过这个.如果使用空字符串调用此函数,它可以正常工作(返回false值).
| 归档时间: |
|
| 查看次数: |
18799 次 |
| 最近记录: |