none
如何用c#连接visual studio 的localdb

    问题

  • 写个程序尝试用c#连接vs自带的localdb数据库,但是却无法连接。
      有时候会提示无法打开,提示的错误为:An attempt to attach an auto-named database for file c:\inetpub\wwwroot\Demo\App_Data\aspnetdb.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
     有时候是ExecuteNonQuery()错误。但是我看帮助文件都所是数据库连接不正常导致的?代码如下

    using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace databaseconnect { class Program { static void Main(string[] args) { //判断数据库相对路径 string dataDir = AppDomain.CurrentDomain.BaseDirectory; if (dataDir.EndsWith(@"\bin\Debug\") || dataDir.EndsWith(@"\bin\Release\")) { dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName; AppDomain.CurrentDomain.SetData("DataDirectory", dataDir); } //写入数据 SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB; AttachDbFilename=|DataDirectory|\Database1.mdf; Integrated Security=True"); SqlCommand cmd = new SqlCommand(); // SqlDataAdapter adapter; con.Open(); cmd = new SqlCommand("insert into [table1] value (123,'name','state')",con); /*cmd.Parameters.AddWithValue("@id", "123"); cmd.Parameters.AddWithValue("@name", "tuidaods@qq.com"); cmd.Parameters.AddWithValue("@state", "haikou");

    */ cmd.ExecuteNonQuery(); con.Close(); } } }


    然后我测试了一下连接,显示连接是可以连接的


    • 已编辑 cakeMadeira 2016年12月16日 14:04 补充说明
    2016年12月16日 9:09

答案

  • Hi,

    感谢你在MSDN上面发表你的问题。

    我觉得问题应该是AttachDbFilename导致的结果。

    如果你设置绝对地址,应该不会出现链接问题。

    如下面的代码:

    SqlConnection c = new SqlConnection (
       @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");


    如果你设置相对地址的方法,

    Set |DataDirectory| value
    AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
    
    // SQL Connection String with |DataDirectory| substitution string
    SqlConnection c = new SqlConnection (
       @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");

    我建议你使用用绝对地址。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年12月19日 6:39
    版主

全部回复

  • Hi,

    感谢你在MSDN上面发表你的问题。

    我觉得问题应该是AttachDbFilename导致的结果。

    如果你设置绝对地址,应该不会出现链接问题。

    如下面的代码:

    SqlConnection c = new SqlConnection (
       @"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");


    如果你设置相对地址的方法,

    Set |DataDirectory| value
    AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
    
    // SQL Connection String with |DataDirectory| substitution string
    SqlConnection c = new SqlConnection (
       @"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");

    我建议你使用用绝对地址。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年12月19日 6:39
    版主
  • 数据库版本是

    please verify my account

    2016年12月19日 7:27
  • 数据库版本是

    please verify my account

    谢谢你的回复
    2018年4月22日 8:34