2

我在插入我的 SQL CE 数据库时遇到问题。

我已经写了一些代码,然后当我需要一个数据库时,我右键单击投影,添加了新项目Local Database,然后它让我选择一个数据模型 - 我选择了“数据集”。

这在我左侧的服务器资源管理器下为我创建了一个数据库,在我的右侧,在解决方案资源管理器中可以看到相同的 .sdf 文件。

我启动我的应用程序,我运行一个插入查询,它给了我插入成功的输出,我看到 root/bin/Debug/db.sdf 下的 .sdf 文件刚刚被修改,我关闭了我的应用程序,但我的原始数据库位于在 /root/db.sdf。如果我从服务器资源管理器中查询数据库,我看不到任何更改/插入的行。这是我使用的代码:

首先,我尝试了服务器数据源选项,所有未注释的选项都对我不起作用。

            //String connectString = @"Data Source=" + '"' + @"C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\myDB.sdf;" + '"';
            //String connectString = "Data Source:=" + '"' + @"C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\my.sdf" + '"';
            //String connectString = "Data Source:=C:\\Users\\Alex\\Documents\\Visual Studio 2012\\Projects\\my\\my\\my.sdf";
            //String connectString =@"Data Source:=C:\Users\Alex\Documents\Visual Studio 2012\Projects\my\my\myDB.sdf";
            String connectString = "Data Source=myDB.sdf";
            using (SqlCeConnection connection = new SqlCeConnection(connectString))
            {
                connection.Open();
                String query = "Insert into items (id, title)  VALUES ('" + ID + "', '" + title + "');                  
                SqlCeCommand cmd = new SqlCeCommand(string.Format(query), connection);
                int result = cmd.ExecuteNonQuery();  
            }

关闭应用程序后,我右键单击项目表,然后“显示表数据” - 没有插入。我究竟做错了什么?

4

2 回答 2

1

Visual Studio 可能正在将原始解决方案项的副本创建到bin/Debug子文件夹中(在每个构建中)。执行代码时永远不会触及原始文件,并且您的更改可能会在您下次构建应用程序时被丢弃。

因此,根据您的用例,您要么必须在 bin/Debug 中打开数据库以查看数据,要么更改连接字符串以使用位于项目/解决方案根目录中的连接字符串。

于 2013-03-17T12:28:57.310 回答
1

您的 bin/debug 文件夹中有数据库的副本,其中包含正确的数据 - 在连接字符串中输入数据库文件的完整路径以避免混淆

于 2013-03-17T12:28:59.773 回答