我浏览了 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 位。
更新
之前我使用的是项目中存在的 MDF 文件。我想,每次项目运行时,它都会自动附加到 SQL 服务器实例。这是我遇到问题的时候。连接字符串包含一些有关附加数据库文件的信息。
我删除了与 Visual C# 2010 Express 一起安装的 SQL Server 2008 Express。还从项目中删除了 MDF 文件。
我单独下载并安装了 SQL Server 2008 Express 和 Management Studio Express。
在 management studio 中创建了一个新数据库。
使用不同类型的连接字符串来使用服务器中的数据库。
现在 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/