我通过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);
}
修改
不会抛出任何异常。
应该返回no的ExecuteNonQuery()。受影响的行返回1
。
环境:Visual C#2010 Express | SQL Server 2008 Express | Windows 7旗舰版32位。
更新
以前我使用的是项目中的MDF文件。我想,每次项目运行时,它都会自动附加到SQL Server实例上。这是我遇到问题的时候。连接字符串包含有关附加数据库文件的一些信息。
我删除了我随Visual C#2010 Express一起安装的SQL Server 2008 Express。还从项目中删除了MDF文件。
我单独下载并安装了SQL Server 2008 Express和Management Studio Express。
在管理工作室中创建了一个新数据库。
使用不同类型的连接字符串来使用服务器中的数据库。
现在INSERT正在运作!
P.S。我想我应该提到我有一个附加数据库文件的场景。真的很抱歉。
答案 0 :(得分:3)
我怀疑你有以下情况:
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”正在运行,每次运行应用程序时都会“重置”。