SQL Server的连接字符串(本地数据库)

3
我在Visual Studio中为我的应用程序添加了一个本地数据库:

database

我需要它的连接字符串 - 在这里:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=127.0.0.1.;" +
                        "Initial Catalog=Filter;" +
                        "Integrated Security=SSPI;";

conn.Open();

当我运行那段代码时,整个UI线程停止了,就像无限for循环一样。我的连接字符串有什么问题吗?
我正在使用Windows Forms,C#,.NET Framework版本4.5.1。

1
从截图来看,你似乎正在尝试连接到一个数据库文件(.mdf),而不是一个服务器实例。如果Data Source=<yourcomputername>无法工作,那么尝试将路径放到mdf文件中。例如:Data Source=C:\Data\Filters.mdf。我猜测UI线程停止的原因是默认的连接超时时间为30秒,所以在.net抛出异常之前,连接有30秒的时间来响应。 - Handbag Crab
2个回答

2

你的问题之一是IP地址末尾有一个“.”。请按照以下方式删除它:

"Data Source=127.0.0.1;" +
"Initial Catalog=Filter;" +
"Integrated Security=SSPI;";

此外,我强烈建议您像这样将连接对象包装在使用语句中:

using

。该语句可以使代码更加简洁易读,并且能够自动释放资源。
using (SqlConnection conn = new SqlConnection())
{ 
   conn.ConnectionString =
   "Data Source=127.0.0.1.;" +
   "Initial Catalog=Filter;" +
   "Integrated Security=SSPI;";

    conn.Open();
}

最后,将您的连接定义为一个字符串,并在实例化SqlConnection对象时将其传递进去,就像这样:
string sqlConnection = "Data Source=127.0.0.1;Initial Catalog=Filter;Integrated Security=SSPI;"

using (SqlConnection conn = new SqlConnection(sqlConnection)
{
   conn.Open();
}

这种方式可以为您完成以下几件事情:
  1. 使您的代码变得简单易读
  2. 确保即使在using块中抛出异常,连接对象也会被Dispose处理。
  3. 这只是一种早期养成的良好习惯
有关 SqlConnection 类的更多信息请单击此处,有关 using 的更多信息请单击此处

请参考上面的注释,在你的原始问题中。你是否指向正确(或任何)的.mdf文件? - Brian

1

去掉IP地址的最后一个点。

"Data Source=127.0.0.1.;" +   

应该是:

应该是:

"Data Source=127.0.0.1;" +

2
确保 SQL Server 正在运行,您可以使用 SSMS 使用 Windows 身份验证连接到数据库。如果这样做有效,请参见 https://www.connectionstrings.com/sql-server/ 以获取正确的语法。 - MLeblanc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接