gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:32:52 24 4
gpt4 key购买 nike

我浏览了 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com