【问题标题】:c# Local Database insert into doesn't workc#本地数据库插入不起作用
【发布时间】:2015-08-30 23:37:14
【问题描述】:

我尝试了太多次但插入不起作用! 请帮帮我..

代码:

SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("INSERT INTO mytbl(Id, Nav) VALUES('yek','du')", conn); //yek and du are examples
//Following command doesn't work, too
//"INSERT INTO mytbl(Id, Nav) VALUES('"+tb.Text+"','"+tb2.Text+"')"
cmd.ExecuteNonQuery();
conn.Close();

【问题讨论】:

  • 您检查过错误吗?
  • 没有任何错误。程序正常执行,但是当我检查表格时,我没有看到任何新项目..
  • 你怎么知道的。您甚至没有检查结果或错误代码。
  • edit:我停止程序后,查看数据库。所以我检查一下。执行时没有错误。如何检查错误?
  • “不起作用”并没有告诉我们任何事情。描述您观察到的行为,包括您如何观察它,并描述您期望的行为。

标签: c# sql-server sqlcommand


【解决方案1】:

整个 User Instance 和 AttachDbFileName= 方法是有缺陷的 - 充其量!在 Visual Studio 中运行您的应用程序时,它将复制 .mdf 文件(从您的 App_Data 目录到输出目录 - 通常是 .\bin\debug - 您的应用程序运行的位置)并且很可能 ,您的 INSERT 工作正常 - 但您最终只是查看了错误的 .mdf 文件

如果您想坚持使用这种方法,请尝试在 myConnection.Close() 调用上设置断点 - 然后使用 SQL Server Mgmt Studio Express 检查 .mdf 文件 - 我几乎可以肯定您的数据在那里。

在我看来,真正的解决方案

  1. 安装 SQL Server Express(反正你已经完成了)

  2. 安装 SQL Server Management Studio Express

  3. SSMS Express中创建你的数据库,给它一个逻辑名称(例如VictoryDatabase

  4. 使用它的逻辑数据库名称(在服务器上创建它时给出)连接到它——不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=VictoryDatabase;Integrated Security=True
    

    其他一切都一模一样和以前一样......

有关更多背景信息,另请参阅 Aaron Bertrand 的优秀博文 Bad habits to kick: using AttachDbFileName

【讨论】:

    【解决方案2】:

    您的代码正在运行,但首先将 db(.mdf) 复制到 \bin\debug 目录,并且应用程序正在使用该目录 (\bin\debug\Database1.mdf)。使用以下代码获取应用根目录中的 db (.mdf) 路径。

    string path = AppDomain.CurrentDomain.BaseDirectory.ToLower().Replace("\\bin", "").Replace("\\debug", "").Replace("\\release", "").TrimEnd('\\');
    
    string conStr =  "Data Source=(LocalDB)\\v11.0;AttachDbFilename=" + path + "\\Database1.mdf;Integrated Security=True";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多