【发布时间】:2012-02-21 18:07:42
【问题描述】:
我的表名是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());
}
【问题讨论】:
-
为了澄清......您根本没有插入任何行,还是插入了一个空白行?
-
ExecuteNonQuery 返回什么?
-
正如我之前在此站点上所说的那样 - 整个 User Instance 和 AttachDbFileName= 方法是有缺陷的 - 充其量! Visual Studio 将在 .mdf 文件周围进行复制,很可能,您的 INSERT 工作正常 - 但您最终只是查看了 错误的 MDF 文件!如果你想坚持下去 - 尝试在你的连接上的
.Close()调用上放置一个断点 - 然后检查.mdf文件,例如SQL Server Mgmt Studio Express - 我几乎可以肯定你的数据在那里。 -
真正的解决方案是 (1) 安装 SQL Server Express,(2) 安装 SQL Server Management Studio Express,(3) 在 SSMS 中创建数据库 Express,并且 (4) 使用它的逻辑 数据库名称 连接到它(在服务器上创建它时给出) - 不要弄乱物理数据库文件和用户实例和所有这些废话!
-
是的,我不明白使用这个 AttachDbFilename 和 User Instance 废话的愿望。这不是每次构建/编译/调试时都会创建一个新版本的 MDF 吗?
标签: c# sql-server sql-server-2005