[英]How to check is connection string valid?
I have to save data and I have to test connection before to save it. 我必须保存数据,我必须先测试连接才能保存。 How can I test that this connection string is valid for a particular connection?
如何测试此连接字符串对特定连接是否有效?
My code is like this: 我的代码是这样的:
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;
}
Connection string is: 连接字符串是:
Data Source=testSvr03\SQLEXPRESS;Initial Catalog=Test; Connection Timeout=600; Persist Security Info=True;User ID=Test; password=test
If I give wrong data source in connection String then it never returns in this function after conn.open() .I put catch block but it is coming in it 如果我在连接字符串中给出错误的数据源,那么在conn.open()之后它永远不会在这个函数中返回。我把catch块但是它进来了
Can anyone Tell me what is solution? 谁能告诉我什么是解决方案?
You can let the SqlConnectionStringBuilder
constructor check it: 您可以让
SqlConnectionStringBuilder
构造函数检查它:
bool isValidConnectionString = true;
try{
var con = new SqlConnectionStringBuilder("ABC");
}catch(Exception)
{
// can be KeyNotFoundException, FormatException, ArgumentException
isValidConnectionString = false;
}
Here's an overview of the ConnectionStringBuilders
for the different data providers: 以下是不同数据提供者的
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
You can put the return
statement just in the catch
block like this 您可以将
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;
}
I have just tried this. 我刚试过这个。 It works correctly (returns false value) if you call this function with empty string.
如果使用空字符串调用此函数,它可以正常工作(返回false值)。
You can just try to open connection 你可以尝试打开连接
SqlConnection myConnection = new SqlConnection(myConnString);
try
{
myConnection.Open();
}
catch(SqlException ex)
{
//Failure to open
}
finally
{
myConnection.Dispose();
}
You can do it in background thread and you can set Timeout, If you don't want waiting long 您可以在后台线程中执行此操作,您可以设置超时,如果您不想等待很长时间
This is what I ended up using: 这是我最终使用的:
private bool validateConnectionString(string connString)
{
try
{
var con = new SqlConnectionStringBuilder(connString);
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
return (conn.State == ConnectionState.Open);
}
}
catch
{
return false;
}
}
Try this. 尝试这个。 This is the easiest way to check a connection.
这是检查连接的最简单方法。
try
{
using(var connection = new OleDbConnection(connectionString)) {
connection.Open();
return true;
}
}
catch {
return false;
}
you mean connection string? 你是说连接字符串?
well, something like this maybe... 好吧,这样的事可能......
try
{
//....try to connect and save it here, if connection can not be made it will throw an exception
}
catch(Exception ex)
{
}
Create a connection object and try to open it. 创建一个连接对象并尝试打开它。
An exception will be throw if the connection string is invalid. 如果连接字符串无效,则抛出异常。 Something like this:
像这样的东西:
using(var connection = New SqlConnection("..."))
{
connection.Open();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.