我正在编写表单数据库程序。 为了这个目的,我需要手动读出数据,我认为 - 经过长时间的研究 - 这是解决我的数据库的最佳方式:
con = new System.Data.SqlServerCe.SqlCeConnection();
String connectionString = "Data Source=|DataDirectory|\\Database1.sdf";
String executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
String path = (System.IO.Path.GetDirectoryName(executable));
AppDomain.CurrentDomain.SetData("DataDirectory", path);
con.ConnectionString = connectionString;//"Data Source=C:\\Users\\Name\\Documents\\Databases\\Visual 2012\\Database1.sdf";
con.Open();
这在可视化编辑器中有效,但在发布我的程序和程序安装后,它会发出错误,因为已安装的文件夹中没有数据库。
(安装后,connectionString的目标是C:\Users\Tac\AppData\Local\Apps\2.0\9E0GCT8K.WVE\KYYL0ERB.678\Program
,并且没有数据库。
有人能帮助我提出一个好主意,如何在安装后进行寻址工作?
答案 0 :(得分:0)
如果您没有使用SetData设置DataDirectory,它将检查的位置之一是可执行文件的目录。
您可以在安装程序中包含数据库(我猜是空的),并将其配置为与可执行文件安装在同一目录中。
或者最好还是在Windows中使用其中一个特殊文件夹。
AppDomain.CurrentDomain.SetData("DataDirectory", Environment.SpecialFolder.ApplicationData);
您也可以在安装程序配置中指定此文件夹。 有关特殊文件夹和文件系统编辑器
的更多信息,请查看此link