【问题标题】:Visual Studio Connection String- Relative file path?Visual Studio 连接字符串 - 相对文件路径?
【发布时间】:2013-07-17 14:17:52
【问题描述】:

我已经使用 Visual Studio 2010 构建了一个数据库。在我的数据访问文件中,我编写了我的连接字符串

@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\SOFTWARE\Database\persondb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

你可以看到我的数据库在

C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Database\persondb.mdf

我的解决办法是

C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Management System\Management System.sln

每次从一台电脑传输到另一台电脑时,都必须更改数据库的连接字符串。我不想那样做。所以我尝试将绝对文件路径更改为相对文件路径(关于我的 .sln 文件)。我像这样更改了我的连接字符串-

@"Data Source=.\SQLEXPRESS;AttachDbFilename=..\Database\persondb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

但它没有用。那么我的问题是什么? windows 通常将 *..* 识别为 directory up 命令。相对文件路径是否不适用于连接字符串?

【问题讨论】:

    标签: c# .net sql database visual-studio-2010


    【解决方案1】:

    问题是在运行时你正在执行:

    C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\Software\Management System\bin\Debug
    

    所以从那里的相对路径是:

    ..\..\..\Database ...
    

    但是,这种方法存在一个更根本的问题。这仅在开发中有效。部署系统的时候不会有Database文件夹在你上面三个目录,它实际上是一个子目录。

    更合适的方法可能是在您的解决方案中创建一个Database 文件夹,将数据库放入其中,然后将其设置为Copy Always。连接字符串将是:

    Database\ ...
    

    这将适用于开发和生产。

    【讨论】:

    • 哦thnx,让我试试这个
    • no ..\ 符号似乎不起作用。解决方案下的嵌套数据库文件夹也没有。好吧,我想我必须始终使用绝对路径:(
    【解决方案2】:

    你不必写绝对路径,你需要把你的数据库文件放在App_Data文件夹中,并在web.config中添加以下连接字符串:

    <connectionStrings>
        <add name="PersonDBCS" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\persondb.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    其中|DataDirectory| 指向App_Data 文件夹。

    那么就可以这样访问了:

    using System.Configuration;
    ...
    string conStr = ConfigurationManager.ConnectionStrings["PersonDBCS"].ConnectionString
    

    【讨论】:

    • 好吧,我使用的是 Windows 窗体,所以我的解决方案中没有 App_Data 文件夹。那么 |DataDirectory| 是什么?对我来说意味着什么?调试文件夹??
    猜你喜欢
    • 2011-06-27
    • 2014-10-29
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多