我的表名是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());
}
答案 0 :(得分:6)
正如我之前在此网站上所说的那样 - 整个用户实例和AttachDbFileName = 方法存在缺陷 - 充其量! Visual Studio将围绕.mdf
文件和最有可能进行复制,您的INSERT
工作正常 - 但您只是查看错误的.mdf文件< / strong>到底!
如果你想坚持这种方法,那么尝试在myConnection.Close()
调用上设置一个断点 - 然后用SQL Server Mgmt Studio Express检查.mdf
文件 - 我几乎可以肯定你的数据在那里。
我认为真正的解决方案将是
安装SQL Server Express(你已经完成了)
安装SQL Server Management Studio Express
在 SSMS Express 中创建数据库,为其指定一个逻辑名称(例如VictoryDatabase
)
使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:
Data Source=.\\SQLEXPRESS;Database=VictoryDatabase;Integrated Security=True
其他所有内容都完全与以前相同......
答案 1 :(得分:1)
你所说的根本不会发生。查询将插入记录,否则您将获得异常。
但是您的查询中存在错误。 @CustAdd
参数周围不应该有撇号,这会使数据库将其解释为文字字符串,而不是参数:
string query = "insert into Customer(CustomerName,CustomerAddress,PhoneNo) values (@CustNm,@CustAdd,@Ph)";
我不确定数据库会如何反应,但是你会得到一个异常,告诉你你有一个从未在查询中使用的参数,或者它会插入一个值为@CustAdd
的记录作为地址。
答案 2 :(得分:0)
答案 3 :(得分:0)
你没有指定相同的参数,(忘了添加“@”就像这样:
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);
答案 4 :(得分:0)
CustomerId是否设置为Customer表上的AutoIncrementing PK?此外,您不需要'@CustAdd'参数上的单引号(');