像往常一样将 SQL Server CE 数据库安装在单独的文件夹中,并将应用程序安装在其他文件夹中。从设备卸载应用程序时,数据库不会删除。在同一设备上重新安装应用程序时,检查其中是否存在数据库 [我们在第一次安装时保存的位置],如果不存在,则保存在所有智能设备的公共文件夹中 [如\Program Files\
],否则使用现有数据库。
我如何使用 C#、Windows Mobile 6 来做到这一点??????
像往常一样将 SQL Server CE 数据库安装在单独的文件夹中,并将应用程序安装在其他文件夹中。从设备卸载应用程序时,数据库不会删除。在同一设备上重新安装应用程序时,检查其中是否存在数据库 [我们在第一次安装时保存的位置],如果不存在,则保存在所有智能设备的公共文件夹中 [如\Program Files\
],否则使用现有数据库。
我如何使用 C#、Windows Mobile 6 来做到这一点??????
阅读您的评论后,我建议类似于以下内容:
当您的应用程序启动时,让它检查您的数据库是否存在于您需要的路径(或在 INI 文件中指定的路径)
如果找不到数据库,请询问用户是否应该使用默认数据库(或者,如果他们别无选择,只需复制它)。
删除应用程序后,该数据库将保留。
当您的应用程序重新安装时,它可以使用留下的数据库。
例子:
namespace DBTest1 {
public partial class Form1 : Form {
const readonly string MYDATABASE = "\\Application Data\\DBTest1\\sqlce.db";
private void Form1() {
InitializeComponent();
CreateIfNotThere(DBTest1.Properties.Resources.sqlcedb, MYDATABASE);
}
void CreateIfNotThere(object data, string filename) {
if (String.IsNullOrEmpty(filename)) {
filename = string.Format(@"{0}{1}{2}",
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
Path.DirectorySeparatorChar, "sqlCe.db");
}
if (data != null) {
byte[] array = (byte[])data;
FileInfo file = new FileInfo(filename);
if (!file.Exists) {
using (FileStream fs = file.Create()) {
fs.Write(array, 0, array.Length);
}
}
}
}
// other code
}
如果您想编写自定义 CABWIZ 步骤,请参阅如何从命令行为智能设备 cab 项目创建 inf 文件?线。