为什么我不能用C#将数据插入本地数据库(SQL Compact Edition)?

我在Visual Studio上做一个项目。 我正在使用本地数据库(空sql server精简版)。 我选择了数据集并创建了我的表格(图像)。 它有一个主自动增量id列和一个nvarchar ImagePath列。 我想在其中插入数据,这是我的代码。

SqlCeConnection con = new SqlCeConnection(); con.ConnectionString = yeniApplicationDatabase.Properties.Settings.Default.DatabaseEdaConnectionString; con.Open(); using (SqlCeCommand com = new SqlCeCommand("INSERT INTO Images (ImagePath) VALUES ('book')", con)) { com.ExecuteNonQuery(); } 

我不知道为什么但是这个没有给出任何错误,语法(SQL)没问题。 但是,当我检查表数据时,它仍然是null。 这是事情;

在同一场比赛中
我执行那个代码,然后我执行另一个从图像中选择* …
它显示了“书”。 但是,表数据仍然是空的,当我重新运行它而不插入时,只从图像中选择,它又消失了。 我真的不明白发生了什么。 为什么我不能在我的数据库中放任何东西?

我还添加了con.Close()但它仍然无效。

 SqlCeConnection con = new SqlCeConnection(); con.ConnectionString = yeniApplicationDatabase.Properties.Settings.Default.DatabaseEdaConnectionString; con.Open(); SqlCeCommand com = new SqlCeCommand("INSERT INTO Images (ImagePath) VALUES ('book')", con); com.ExecuteNonQuery(); com.Dispose(); con.Close(); 

关闭连接应完成插入。

编辑:更新解决方案

您正在查看哪个数据库文件(.sdf)以检查是否已插入数据。 检查bin \ Debug文件夹中.sdf中测试表的内容。 我相信您的数据已正确插入bin \ Debug文件夹中的数据库文件中。

刚刚在堆栈溢出时发现了类似的问题: 为什么我不能将记录插入到我的SQL Compact 3.5数据库中? 我坚信你的问题是完全一样的。 您正在检查错误的数据库文件。

我不使用Eclipse,但在调试本地数据库时必须注意的是在解决方案资源管理器中数据库文件的复制文件属性。

默认情况下,此属性为“复制”,这意味着数据库的副本将放在项目的bin \ debug文件夹中,连接字符串将复制到副本中。 如果更改副本,则不会更改原始文件,并在调试会话退出时丢弃更改。

查看IDE是否复制数据库并检查连接字符串。 你是如何“检查数据表”的? 您使用相同的连接字符串吗? 你是在调试会话结束后这样做的吗?

 SqlCeConnection conn = new SqlCeConnection(@"Data Source = c:\FullPath") 

如何获取完整路径:在解决方案资源管理器中右键单击.Sdf然后获取fullPath。