2015-02-23 70 views
4

为什么System.Data.SqlClient.SqlConnection类抛出一个异常,“参数不正确”?ASP.NET连接字符串到本地SQL Server数据库,使用web.config

我试图学习如何使用.NET框架4.5使用本地SQL数据库和ASP.NET MVC项目建立数据库连接。

下面是我所采取的导致了这个步骤:

  1. 在我的项目App_Data文件夹中创建一个新的SQL Server数据库,名为TestSQLdb.mdf

  2. 创建一个连接字符串中web.config

    <add name="SQLTestConnection1" 
        connectionString="Data Source=(LocalDB);initial catalog=TestSQLdb;Integrated Security=true" /> 
    
  3. 通过

    string cn_str = ConfigurationManager.ConnectionStrings["SQLTestConnection1"].ConnectionString; 
    

    访问连接字符串(见this SO线程的详细信息在此)。

  4. 创建一个新的连接:

    SqlConnection conn = new SqlConnection(cn_str); 
    
  5. 尝试打开连接:

    try 
    { 
        conn.Open(); 
    

    在这一点上,则抛出异常。

我试图设置它,所以它会简单易学。我错过了什么?

+0

你真的调用一个方法'cn_str()'在'新SqlConnection'或者是它只是一个错字? – 2015-02-23 20:50:58

+0

@PilgerstorferFranz:'cn_str()'方法在我的代码中是正确的,但是例如这里应该只是'cn_str'。感谢您指出。我会编辑我的问题,因为@ NightOwl888在下面的回答中也指出了这个问题。 – 2015-02-23 21:06:38

回答

5

当你用的LocalDB工作,你必须指定你的connectionString一个AttachDbFileName属性。此属性应该指向您的TestSQLdb.mdf文件。初始目录是您的mdf文件中dataBase的名称。

看到MSDN这个例子

<add name="ConnectionStringName" 
providerName="System.Data.SqlClient" 
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" /> 
+0

是的,就是这样。 +1为有用的链接。 – 2015-02-23 21:10:13

0

您没有将变量传递给new SqlConnection,而是尝试调用一个名为cn_str的函数。

要使其起作用,您需要从名称中删除括号。

SqlConnection conn = new SqlConnection(cn_str); 
+0

嗯,我的错我没有指出我实际上使用函数来获取'cn_str'。感谢您指出了这一点,但这不是我想的问题。如果需要,我会编辑我的问题。 – 2015-02-23 21:05:07

+0

如果这是问题所在,那么错误信息会有所不同,例外情况会在不同的时间发生。 – mason 2015-02-23 21:25:02

相关问题