gpt4 book ai didi

c# - INSERT 语句影响 1 行,但 VS Server Explorer 显示它实际上并没有更新 SQL CE 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 20:32:46 26 4
gpt4 key购买 nike

我已经检查了其他 Stack Overflow 问题以找到答案,但我就是找不到解决方案。我正在尝试将字符串数据插入到 SQL CE(本地数据库)中。

我可以从数据库中读取,但我无法插入数据,无论我是硬编码还是尝试使用参数添加它。

要修改的表称为users。它有 3 列:IDnameemail

这是我使用的代码:

string connection = Properties.Settings.Default.LocalDBConnectionString;

using (var con = new SqlCeConnection(connection))
{
con.Open();

// (I also tried adding with parameters but couldn't get it working.)
using (var com = new SqlCeCommand("INSERT INTO users (name, email) " +
"VALUES (N'jimmy', N'email@jim.com')", con))
{
int numRowsAffected = com.ExecuteNonQuery();

// This returns '1 row affected' but doesn't actually update the database
Console.WriteLine(numRowsAffected);
Console.ReadKey();
}
}

虽然Console输出了1,但是因为有1行被影响,当我回数据库查看的时候,并没有插入新的数据。

我正在关注 this tutorial , 但只有 Read 有效, Insert 或 write 无效。

我也发现了这个类似的Stack Overflow question , 但使用参数,仍然无法让它工作。


编辑:

我的连接字符串是:

Data Source=|DataDirectory|\LocalDB.sdf

我不知道如何找到build设置,它是我在控制台应用程序解决方案中创建的本地数据库,它存储在项目目录中。

如果有帮助,我在“调试”配置中?


这是我找到的另一个例子 on the internet :

SqlCeConnection con = new SqlCeConnection(Properties.Settings.Default.LocalDBConnectionString);
con.Open();

SqlCeCommand comInsert = new SqlCeCommand ("INSERT INTO users(name, email) VALUES('value 1', 'value 2')", con);
comInsert.ExecuteNonQuery();

SqlCeCommand comSelect = new SqlCeCommand("SELECT * FROM users", con);
SqlCeDataReader reader = comSelect.ExecuteReader();

while (reader.Read())
{
Console.WriteLine("{0} {1}", reader["name"], reader["email"]);
Console.ReadKey();
}

con.Close();

我刚刚复制并粘贴了它,并更改了主要变量。此示例临时插入数据,但当我转到 Visual Studio 的服务器资源管理器并查看表时,它没有更新。

最佳答案

您确定您INSERT 进入的数据库和您使用服务器资源管理器查看的数据库是同一个数据库吗?

请记住,我们在这里讨论的是基于文件的数据库 (SQL Server CE)。因此,可能是您正在INSERT您的数据库副本中,然后查看(未更改的)原始文件。

  • 数据库文件是您解决方案的一部分吗?如果是这样,它是否被复制到输出目录(例如 bin\Debug)?检查相应解决方案项的属性,如下面的屏幕截图所示(对不起,它是德语的):

    Screenshot showing a 'Local Database' project item and its 'Copy to output directory' property setting

  • 连接字符串中的DataDirectory到底指向哪里?如果您不确定,请暂时将其替换为绝对值,看看是否能解决您的问题。

再次确保您的连接字符串确实指向您正在使用服务器资源管理器查看的数据库!

关于c# - INSERT 语句影响 1 行,但 VS Server Explorer 显示它实际上并没有更新 SQL CE 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com