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

时间:2011-03-21 17:07:00

标签: c# database

我在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()但它仍然不起作用。

3 个答案:

答案 0 :(得分:8)

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文件夹中的数据库文件中。

刚刚在堆栈溢出时发现了一个类似的问题:Why can't I insert a record into my SQL Compact 3.5 database?我坚信你的问题是完全一样的。你正在检查错误的数据库文件。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

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