ADO.Net - 为什么不插入插件?

时间:2010-09-11 10:45:37

标签: 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);
}

修改

  • 不会抛出任何异常。

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

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

更新

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

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

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

  4. 在管理工作室中创建了一个新数据库。

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

  6. 现在INSERT正在运作!

    P.S。我想我应该提到我有一个附加数据库文件的场景。真的很抱歉。

1 个答案:

答案 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”正在运行,每次运行应用程序时都会“重置”。