数据没有插入表格?

我的表名是Customer 。 它有四列

 CustomerId CustomerName CustomerAddress PhoneNo 

这是我的c#代码。 我没有得到任何例外,数据没有插入数据库。

 string connString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VictoryDatabase.mdf;Integrated Security=True;User Instance=True"; SqlConnection myConnection = new SqlConnection(connString); try { myConnection.Open(); string query = "insert into Customer(CustomerName,CustomerAddress,PhoneNo) values (@CustNm,'@CustAdd',@Ph)"; SqlCommand myCommand = new SqlCommand(query,myConnection); myCommand.Parameters.AddWithValue("CustNm",Print[0].CustomerName); myCommand.Parameters.AddWithValue("CustAdd",Print[0].Address); myCommand.Parameters.AddWithValue("Ph",Print[0].Telephone); Console.WriteLine(Print[0].Telephone); myCommand.ExecuteNonQuery(); myConnection.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } 

正如我之前在这个网站上所说的那样 – 整个用户实例和AttachDbFileName =方法都存在缺陷 – 充其量! Visual Studio将复制.mdf文件, 很可能 ,你的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 

    其他一切都和以前完全一样……

你所说的根本不会发生。 查询将插入记录,否则您将获得exception。

但是,您的查询中存在错误。 @CustAdd参数周围不应该有撇号,这会使数据库将其解释为文字字符串,而不是参数:

 string query = "insert into Customer(CustomerName,CustomerAddress,PhoneNo) values (@CustNm,@CustAdd,@Ph)"; 

我不确定数据库会如何反应,但是你会得到一个exception,告诉你你有一个从未在查询中使用的参数,或者它会插入一个值为@CustAdd作为地址的记录。

  1. 您确定要查看正确的数据库以确认没有插入数据吗?
  2. 您是否在未提交的事务的上下文中执行此插入?

你没有指定相同的参数,(忘了添加“@”就像这样:

 string query = "insert into Customer(CustomerName,CustomerAddress,PhoneNo) values (@CustNm,'@CustAdd',@Ph)"; SqlCommand myCommand = new SqlCommand(query,myConnection); myCommand.Parameters.AddWithValue("@CustNm",Print[0].CustomerName); myCommand.Parameters.AddWithValue("@CustAdd",Print[0].Address); myCommand.Parameters.AddWithValue("@Ph",Print[0].Telephone); 

CustomerId是否设置为Customer表上的AutoIncrementing PK? 此外,您不需要’@CustAdd’参数上的单引号(’);