我尝试在本地数据库中添加我的值(由Add - >基于服务的数据库创建)。
我的代码:
//string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\VS_MyProjects\DBAppliaction\DBAppliaction\Database1.mdf;Integrated Security=True";
string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;";
string query = "INSERT INTO [dbo].[Table] (Test) " +
"VALUES (@Test) ";
// create connection and command
using (SqlConnection cn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, cn))
{
// define parameters and their values
cmd.Parameters.Add("@Test", SqlDbType.NChar, 10).Value = "test";
// open connection, execute INSERT, close connection
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
}
当我使用完整路径到我的数据库时,一切都还好。在“显示数据表”中显示我的附加值。但是当我在路径| DataDirectory |中使用时并按“显示数据表”中的“更新”按钮以验证是否添加了我的值或没有我看到错误:“此数据库无法导入。它是不受支持的SQL Server版本或不支持的数据库兼容性”。为什么呢?
答案 0 :(得分:0)
在连接字符串中缺少初始目录键/值对。这意味着当LocalDB附加数据库文件MDF时,将使用其完整路径名,并且在程序的后续运行中,附加失败。相反,如果您提供初始目录值,则后续运行只使用该目录
所以将连接字符串更改为
string connectionString = @"Data Source=(LocalDB)\v11.0;
AttachDbFilename=|DataDirectory|\Database1.mdf;
Initial Catalog=LogicalNameOfYourDatabase
Integrated Security=True;";
当然第一个问题(数据显然没有保存)是由DataDirectory替换字符串的行为以及Visual Studio处理附加到项目的MDF文件的方式引起的(如another answer here中所述)< / p>
答案 1 :(得分:0)
我遇到了与VS2012和SQL2014类似的问题。实质上,VS中的SQL工具不是SQL服务器的最新工具。解决方法是在我的开发PC上本地安装SQL2014管理工具。
答案 2 :(得分:0)
试试这个:
string connectionString = @"Data Source=(LocalDB)\v11.0;
AttachDbFilename="+System.IO.Path.GetFullPath("Database1.mdf")+";
Initial Catalog=LogicalNameOfYourDatabase
Integrated Security=True;";