我最近的项目有点问题。我的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文件。
那我该如何指定呢?
答案 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;"