C#无法修改数据库

时间:2015-08-05 19:51:46

标签: c# database commit

我目前正在尝试使用C#程序修改本地数据库。我按照这个例子:https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.commit.aspx

问题是修改是在程序运行时完成的(例如,如果我添加一个新行,我会在程序中看到它),但当我停止程序并检查数据库时,有没有变化 - 数据库与执行前完全相同。

我已经在这个问题上工作了好几天,但还没有找到解决方案。

以下是我工作的摘录:

SqlConnection connectionLocale = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|LocalDB.mdf;Integrated Security=True");

SqlCommand command2 = connectionLocale.CreateCommand();
SqlTransaction transaction;

connectionLocale.Open();
transaction = connectionLocale.BeginTransaction();

command2.Connection = connectionLocale;
command2.Transaction = transaction;

try
{
    command2.CommandText = "DELETE FROM Chercheur";
    command2.ExecuteNonQuery();
    transaction.Commit();
    Console.WriteLine("commit ok");
}
catch
{
    transaction.Rollback();
}

connectionLocale.Close();

我正在使用带有.mdf数据库的Visual Vtudio 2012。

经过一些研究后,我看到连接(AttachDbFilename=|DataDirectory|LocalDB.mdf)创建了一个临时数据库,并且所有更改都在此临时数据库上完成。

如何影响原始数据库而不是此临时数据库?

3 个答案:

答案 0 :(得分:1)

要保持更改,您需要将数据库放在真正的SQL Server上,并将连接字符串更改为:Server=someServerName; Database=someDatabaseName; Trusted_Connection=trueServer=someServerName; Database=someDatabaseName; User ID=someSqlUser; Password=somePassword

答案 1 :(得分:1)

您需要将连接字符串指向正确的实例("原始数据库"):

SqlConnection connectionLocale = new SqlConnection("Data Source = YourInstanceName; initial catalog = YourDatabaseName; Integrated Security=True");

替换以下值:

YourInstanceName - 数据库所在的SQL Server实例的名称(可以在连接到SQL实例时从select @@servername;获取)

YourDatabaseName - 您要修改数据的数据库的名称

连接字符串告知提供商 以定位您的查询。如果您没有指向正确的目标SQL Server实例(和数据库),那么您将获得您遇到的不良结果。

答案 2 :(得分:0)

您的连接字符串指向本地数据库。您的连接字符串 -

"Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|LocalDB.mdf;Integrated Security=True"
必须将

更改为指向您的实际数据库。

查看here以获取生成连接字符串的过程。 您还可以参考connectionstring.com获取示例连接字符串。