c#不能修改数据库

本文关键字:数据库 修改 不能 | 更新日期: 2023-09-27 18:06:44

我正在尝试使用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();

我正在使用Visual Vtudio 2012与。mdf数据库。

经过一番研究,我发现连接(AttachDbFilename=|DataDirectory|LocalDB.mdf)创建了一个临时数据库,并且所有的更改都是在这个临时数据库上完成的。

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

c#不能修改数据库

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

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

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

替换以下值:

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

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

连接字符串告诉提供者在哪里定位您的查询。如果您没有指向正确的目标SQL Server实例(和数据库),那么您将得到您正在经历的不希望的结果。

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

"Data Source=(LocalDB)''v11.0;AttachDbFilename=|DataDirectory|LocalDB.mdf;Integrated Security=True"

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

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