web.config中的asp.net连接字符串问题

时间:2018-09-17 09:23:42

标签: c# asp.net asp.net-mvc

我最近的项目有点问题。我的web.config中有一个连接字符串,但我想在sql特定的类中访问它。

我的连接字符串如下:

“数据源=(LocalDb)\ MSSQLLocalDB; AttachDbFilename = | DataDirectory | \ aspnet-Joblication-20180902120147.mdf;集成安全性= True”

它存储在我的web.config文件中。

我的问题是默认的asp.net函数可以访问此数据库,但是我想在数据库中存储其他数据,所以我尝试使用SqlConnection类访问它。我设置了SqlConnection对象的ConnectionString属性:

SqlConncetion connection = new SqlConnection()
connection.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\aspnet-Joblication-20180902120147.mdf;Integrated Security=True";

但是我每次都会收到此错误:

  

System.Data.SqlClient.SqlException:'尝试附加自动   * .mdf文件的命名数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者该文件位于UNC共享上。'

我将mdf文件的名称替换为'*',因此它更短且易于阅读。

如果我理解这一点,那么我的.mdf文件已经连接到MSSQLLocalDB,因此我应该连接到MSSQLLocalDB,并且我应该能够以某种方式访问​​.mdf文件,对吗?

当我尝试这样做时:

connection = new SqlConnection();
connection.ConnectionString = "Data Source=(LocalDb)\\MSSQLLocalDB;Integrated Security=True";

这似乎没问题,因为该连接现在可以正常工作了,但是我的查询却没有。我的查询试图从.mdf文件的表中获取数据,但在此连接中未指定.mdf文件。

那我该如何指定呢?

3 个答案:

答案 0 :(得分:0)

首先在您的web.config中更新连接字符串,如下所示:

<add name="DefaultConnection"
    providerName="System.Data.SqlClient"
    connectionString="Data Source=(LocalDb)\\MSSQLLocalDB;AttachDbFileName=|DataDirectory|\aspnet-Joblication-20180902120147.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True" />

然后输入代码:

// Don't hard coded the connection string here. Get it from web.config as follows
string connectionString = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (var connection = new SqlConnection(connectionString))
{
   connection.Open();
   // Do your necessary staffs here.
}

答案 1 :(得分:0)

添加到您的Web.config

<add name="Connectionstring"
providerName="System.Data.SqlClient"
connectionString="Data Source=(localdb)\ProjectsV13;Initial Catalog=TestDb;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" />

 class Program
{
    private readonly string _connectionString;
    public Program()
    {
        _connectionString = ConfigurationManager.ConnectionStrings["Connectionstring"].ConnectionString;
    }
    static void Main(string[] args)
    {

        using (var connection = new SqlConnection(_connectionString))
        {
            connection.Open();
            // Do your logic here.
        }
    }
}

答案 2 :(得分:-1)

在您的代码部分中添加数据库名称。我已经用这种方式实现了。

"Data Source=(LocalDb);Initial Catalog=databasename;Integrated Security=True;"