【问题标题】:How to specify subfolder of DataDirectory in C#如何在 C# 中指定 DataDirectory 的子文件夹
【发布时间】:2014-07-14 16:33:41
【问题描述】:

我是 C# 编程的新手,我正在 VS2012 中开发一个 Windows 窗体应用程序,我需要从 SQL 数据库中检索数据,并将图像加载到图片框中。 通过使用绝对路径描述(如“D:\ProjectFolder\DbaseFolder\Dbase.sdf”)或使用数据目录的相对路径,我已成功连接到数据库,如下所示:

myConnection.ConnectionString = 
"Data Source=|DataDirectory|\\Dbase.sdf";

这行得通。但是,我想将我的数据库放在数据目录的子文件夹中,但我不知道如何制作我的连接字符串。我的想法是:

myConnection.ConnectionString = 
"Data Source=|DataDirectory|\\DbaseFolder\\DbFilm.sdf";

但这不起作用。同样的问题也适用于将图像放入图片框中。如何创建数据目录子文件夹的相对路径?

【问题讨论】:

  • 您通常不想在连接字符串上指向 sdf 文件。此外,它应该在您的 app.config 或 web.config 中用于 Web 应用程序。如果您在本地 sql 服务器上工作,您的连接字符串应如下所示:Server=.;Database=myDataBase;Trusted_Connection=True; 您可以在以下位置查找更多连接字符串:connectionstrings.com/sql-server-2012
  • 谢谢安德烈。我已尝试使用来自 connectionstrings.com 的信息,但请您再给我一个正确方向的提示吗?我想在应用程序文件夹内的子文件夹 (\Dbase) 中使用本地数据库 (DbFilm.sdf)。我的连接字符串应该是什么样的?
  • 如果你真的想使用本地数据库,你可以用这个:"Server=(LocalDB)\v11.0;Integrated Security=true;AttachDbFileName=C:\Users\John\Documents\Visual Studio2013\Projects\ADONET2ConnectedExpress\Database1.mdf"。如果你在你的 c# 代码而不是 app.config 上设置它,那么你需要用另一个反斜杠来转义反斜杠
  • 感谢您的快速回复,安德烈。但是,我看到您使用的是绝对路径 (C:\Users\...)。我想使用相对路径(类似于 |DataDirectory|\\Subfolder\...),以便最终用户可以将应用程序安装在他喜欢的任何文件夹中,并且应用程序仍会在应用程序文件夹。
  • 我注意到您有 Dbase.sdf 和 DbFilm.sdf(不同的数据库名称)。也许你把它们混在一起了,这就是你找不到数据库的原因?

标签: c# datadirectory


【解决方案1】:

所以我继续创建了一个sample project and uploaded it to my GitHub page

以下代码非常适合我:

    using (var con = new SqlCeConnection())
    {
        con.ConnectionString = @"Data Source = |DataDirectory|\Database\DB.sdf;Persist Security Info=False";
        var cmd = new SqlCeCommand("SELECT * FROM TEST", con);
        con.Open();
        var data = new DataTable("whatever");
        data.Load(cmd.ExecuteReader());
        con.Close();
    }

我还在示例的 app.config 中包含了连接字符串,因此您可以将其用作最佳实践。您可以从link 下载项目的 zip 文件

【讨论】:

  • Dbase.sdf 只是一个例子,我只使用 DbFilm.sdf。无论如何,谢谢你的榜样。我会尽快试试这个,我会告诉你的。非常感谢!
  • 安德烈,我向您致敬,好先生!通过您的示例和更多的摆弄,我终于能够正确地编写代码。现在工作正常。非常感谢!
  • 很高兴我能帮上忙。干杯
猜你喜欢
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 2021-01-13
  • 2021-06-04
  • 2018-04-25
  • 2018-04-26
相关资源
最近更新 更多