c# - ADO.Net - 为什么插入没有发生?

标签 c# ado.net .net-4.0 sql-server-express

我浏览了 MSDN 页面以使用命令学习 ADO.Net。我可以使用此处发布的示例代码进行阅读。

但是当我尝试使用下面的修改代码时,插入并没有发生。我不知道为什么。有人可以告诉我这段代码有什么问题吗?

string connectionString = "A_VALID_CONNECTION_STRING";
string commandText = 
"INSERT INTO Contacts (FullName, Mobile) VALUES ('Pierce Brosnan', '1800-007')";

SqlConnection connection = new SqlConnection(connectionString);          

try
{
  connection.Open();
  SqlCommand command = new SqlCommand(commandText, connection);
  Console.WriteLine(command.ExecuteNonQuery());
  connection.Close();
}
catch (Exception ex)
{
  Console.WriteLine(ex.Message);
}

编辑

  • 没有抛出异常。

  • 应该返回编号的 ExecuteNonQuery()。受影响的行返回 1

  • 环境:Visual C# 2010 Express | SQL Server 2008 速成 | Windows 7 旗舰版 32 位。

更新

  1. 之前我使用的是项目中存在的 MDF 文件。我想,每次项目运行时,它都会自动附加到 SQL 服务器实例。这是我遇到问题的时候。连接字符串包含一些有关附加数据库文件的信息。

  2. 我删除了与 Visual C# 2010 Express 一起安装的 SQL Server 2008 Express。还从项目中删除了 MDF 文件。

  3. 我单独下载并安装了 SQL Server 2008 Express 和 Management Studio Express。

  4. 在 management studio 中创建了一个新数据库。

  5. 使用不同类型的连接字符串来使用服务器中的数据库。

现在 INSERT 开始工作了!

附言我想我应该提到我有一个附加数据库文件方案。真的很抱歉。

最佳答案

我怀疑您有以下情况:

  • Database.mdf 文件存在于项目中,其中创建了表结构
  • 您的连接字符串看起来像这样 Server=.\SQLExpress;AttachDbFilename=database.mdf;Database=dbname; Trusted_Connection=Yes;,即在连接字符串中加载数据库。

发生的事情是,当你构建/运行你的项目时,你的应用程序被编译并且 database.mdf 文件被复制到 ApplicationProjectFolder\bin\Debug,以便在应用程序运行时,文件 database.mdf 存在。这意味着每次运行项目时,“空”database.mdf 文件都会从 ApplicationProjectFolder\database.mdf 复制到 ApplicationProjectFolder\bin\Debug\database .mdf,因此数据“消失”了。此外,文件 database.mdf 可能在项目的属性中设置了“始终复制”。

因此,“INSERT”正在运行,它只是在您每次运行应用程序时被“重置”。

关于c# - ADO.Net - 为什么插入没有发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690672/

相关文章:

vb.net - 如何更改 .NET 4.0 Web 应用程序中的 System.Globalization.CultureInfo.CurrentUICulture?

c# - 在XML文件中包含所有错误代码和消息并在代码中使用该文件进行记录是否可以?

c# - DataTable 问题列的 ADO.Net DataType

mysql - ADO.NET 连接字符串和密码,其中包含 "="

.net - 从 C# 处理 .dbf 的最佳方式

.net - Robocopy 背后的算法是什么?

c# - C# 中的二进制序列化(实际上是所见即所得序列化)

c# - 我可以在 linqpad 中每个进程只运行一次函数吗?

c# - MSMQ - 反复处理的消息

c# - 如何在 Azure 辅助角色中生成安全随机数?