【问题标题】:Database connection from WPF来自 WPF 的数据库连接
【发布时间】:2013-01-04 01:10:51
【问题描述】:

我的 WPF 应用程序中有一个文件夹“数据”,其中有一个 .sdf 数据库文件。 该文件是我的应用程序的数据库。

在开发我的应用程序时,我使用了一个到我的数据库的固定路径,如下所示:

'Data Source=P:\Dropbox\Projects\MembersApp\MembersApp\bin\Debug\Data\RF_db.sdf'

现在我想使用 |DataDirectory|值,以便应用程序在安装应用程序时始终可以找到数据库。我在 StackOverflow 上找到了这个解决方案:

string executable = System.Reflection.Assembly.GetExecutingAssembly().Location;
string path = (System.IO.Path.GetDirectoryName(executable));
AppDomain.CurrentDomain.SetData("DataDirectory", path);
string dataSourceHome = "Data Source=|DataDirectory|\RF_db.sdf";

但是在最后一行“错误的编译常量值”上给了我一个错误。我试过了:

string dataSourceHome = @"Data Source=|DataDirectory|\RF_db.sdf";

但这不起作用。

知道这里有什么问题吗?

【问题讨论】:

  • 我在这里 [StackOverflow][1] 找到了适合我的解决方案。只需将我的“Data”文件夹重命名为“App_Data”并使用以下代码:string data = @"Data Source=App_Data\RF_db.sdf"; LocalConnection = new SqlCeConnection(data);当我在本地运行我的应用程序时,这对我有用。但是,当我通过 clickonce 部署我的应用程序时,它会失败。 [1]:stackoverflow.com/questions/12932963/…

标签: c# wpf database


【解决方案1】:

不要更改代码中的DataDirectory;它由安装程序设置,更改它会阻止您的应用程序知道数据的安装位置。只需使用:

string dataSourceHome = @"Data Source=|DataDirectory|\RF_db.sdf";

没有别的了。请勿拨打AppDomain.CurrentDomain.SetData("DataDirectory", path);这就是破坏事物的原因。

【讨论】:

    【解决方案2】:

    你可以使用:

    string dataSourceHome = string.Format("Data Source={0}\\RF_db.sdf", Environment.CurrentDirectory);
    

     string dataSourceHome = string.Format("Data Source={0}\\RF_db.sdf", System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
    

    【讨论】:

    • 如果他使用的是安装程序或 ClickOnce,数据目录可能不是应用程序或程序集目录。事实上,从他的编辑看来并非如此。
    【解决方案3】:

    看起来您正在创建一个 ADO.Net 连接字符串。您的dataSourceHome 中不只是缺少信息吗? 看看this post

    或者可以在ConnectionStrings.com 上找到创建连接的不同方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2011-06-21
      • 1970-01-01
      • 2022-06-10
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多