【发布时间】:2010-09-11 10:45:36
【问题描述】:
我浏览了 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 Ultimate 32 位。
更新
以前我使用的是项目中存在的 MDF 文件。我猜,每次项目运行时,它都会自动附加到 SQL 服务器实例。这是我遇到问题的时候。连接字符串有一些关于附加数据库文件的信息。
我删除了随 Visual C# 2010 Express 一起安装的 SQL Server 2008 Express。还从项目中删除了 MDF 文件。
我单独下载并安装了 SQL Server 2008 Express 和 Management Studio Express。
在 Management Studio 中创建了一个新数据库。
使用不同类型的连接字符串来使用服务器中的数据库。
现在 INSERT 正在工作!
附注我想我应该提到我有一个附加数据库文件方案。真的很抱歉。
【问题讨论】:
-
没有。不会抛出(或打印)异常。 Console.WriteLine 打印
1。但是当我看到数据库表时,什么都没有插入。我正在使用 C# 2010 Express IDE 中的数据库资源管理器查看数据。 -
这真的很奇怪。您的代码看起来不错,如果打印了
1,则表示插入了一行。 -
会不会是数据库浏览器没有显示更新的数据?是否因为它是 Express 版而在某些方面受到限制?
-
尝试发送另一个查询,例如
select count(*) from contacts。 -
查询是否在您未完成的事务中运行?
标签: c# ado.net .net-4.0 sql-server-express