0
SqlCeConnection sqlCnn = 
    new SqlCeConnection(Properties.Settings.Default.mainDBConnectionString);

SqlCeCommand sqlCmd = new SqlCeCommand(
    "INSERT INTO desktopItems (Location,Label) VALUES (@Location, @Label)", 
    sqlCnn);

sqlCnn.Open();
sqlCmd.Parameters.Add("@Location", openExe.FileName.ToString());
sqlCmd.Parameters.Add("@Label", openExe.SafeFileName.ToString());
sqlCmd.ExecuteNonQuery();

sqlCnn.Close();

我有这段代码,但是当我运行程序时,数据库没有更新......

4

1 回答 1

2

通常这种情况是由可视化数据库中的一个简单错误引起的。
您的 INSERT 按预期工作,但您检查插入是否成功查看错误目录中的数据库。

在应用程序中使用DATADIRECTORY替换字符串WinForms意味着,在调试时,您的数据库应该位于BIN\DEBUG基础项目文件夹的目录中。
Visual Studio 确保是这种情况,因为在您的项目中,数据库文件被标记为属性Copy To The Output Directory设置为Copy Alwaysor Copy If Newer

当您在 Visual Studio 的调试会话中运行代码时,插入发生在这里。

然后使用SERVER EXPLORER连接检查执行结果。但是这个连接指向项目文件夹中的原始数据库,当然,新记录不存在。

通常,项目文件夹中的数据库会为部署保持最新状态,具有正确的模式和初始数据,但没有任何仅为调试目的而插入的记录。

因此,您可以简单地向 SERVER EXPLORER 添加一个新连接,指向 BIN\DEBUG 中的数据库,重命名它(如“DEBUG-DB”)并保留原始连接,以防您需要更改数据库架构中的某些内容在发布您的应用程序之前。

于 2013-11-10T09:14:56.023 回答