如果我有一个基于用户输入的连接字符串,我想快速确定它是否是有效输入。我做了一些研究,似乎人们使用.Open()
来检查连接。但是在我的控制台应用程序中,此检查在抛出catch语句之前需要大约30秒。有更快的方法吗?
编辑:你们中的一些人建议将超时设置为低于1的值。这不是值得关注的问题吗?考虑到默认设置为 30 ,我担心在有效但速度慢的连接上过早计时。
如果您需要,这是我的代码:
while (sqlManager == null)
{
try
{
sqlManager = new SqlManager(Console.ReadLine());
}
catch
{
sqlManager = null;
Console.WriteLine("values entered could not be used to establish a connection, please try again: ");
}
}
public class SqlManager
{
public SqlManager(string userEntry)
{
string server;
string db;
if (userEntry == "")
{
server = Properties.Settings.Default.SqlServer;
db = Properties.Settings.Default.SqlDatabase;
}
else
{
var splits = userEntry.Split(' ');
server = splits[0];
db = splits[1];
}
SqlConnection con = new SqlConnection($"Server= {server}; Database= {db}; Integrated Security=True;");
con.Open();
}
}
答案 0 :(得分:1)
使用main
属性定义更短的等待时间:
默认值为15或30秒,当前文档提到15 ...您可以将其设置为任何更大或更小的数字。 0意味着无限期等待。
实际上更改默认值有点棘手,因为ConnectionTimeout
类上的ConnectionTimeout
属性是只读的。您必须将其指定为连接字符串的一部分,或使用连接字符串构建器,如下所示:
SqlConnection