【问题标题】:How to change the path to the database files?如何更改数据库文件的路径?
【发布时间】:2021-06-16 21:19:30
【问题描述】:

我创建了一个与一个数据库连接的简单程序。与 SQL db 的连接非常完美。我现在可以插入数据了。我使用对象资源管理器 SQL Server。

现在我的问题是:如果 mdf 文件的路径不是“C:/folder/repair.mdf”,我将无法使用该程序。我希望我的程序独立于 C 盘,因为我应该将这个程序(vs 文件等)发送给其他人。

我怎样才能写出正确的路径,我在哪里可以做到这一点?

【问题讨论】:

  • 您的程序是创建文件还是发送文件?您可以使用标准文件夹(如 %AppData%/YourProgram/repair.mdf)或使用相对于 .exe 的路径。我个人会推荐 AppData。另见docs.microsoft.com/en-US/dotnet/api/…
  • 当使用 SQL Server(或任何其他基于服务器的数据库引擎)时,您的程序不处理甚至不知道 mdf 文件的位置,这完全由服务器管理。您的程序只选择服务器/数据库名称/用户/密码,服务器管理数据库文件。
  • 如果我应该使用 %AppData%,我应该在哪里更改此文本?因为我发现我无法在属性中更改它。
  • 您应该使用 csproj 项目文件中数据文件夹的相对路径,而不是包括 c:\ 在内的完整路径名。
  • @Nazarii1000,有更新吗?请检查我的答案是否适合您。

标签: c# sql-server visual-studio filepath


【解决方案1】:

您可以尝试以下步骤将您的 db 文件移动到其他磁盘并读取正确的路径。

首先,请关闭所有关于数据库的连接。(在查询编辑器窗口中执行以下查询)

ALTER DATABASE School SET SINGLE_USER WITH ROLLBACK IMMEDIATE

其次,你可以将你的db文件从C盘复制到你的项目中。(包括mdf和ldf文件)

最后,我们可以执行下面的c#代码来连接db文件。(我把db文件放在project\bin\debug\school.mdf)。

 private void button1_Click(object sender, EventArgs e)
        {
            string dbpath = System.AppDomain.CurrentDomain.BaseDirectory+"School.mdf";
            string connstr = string.Format("Data Source=yourdatasource;AttachDbFilename={0};Integrated Security=True;", dbpath);
            SqlConnection connection = new SqlConnection(connstr);
            connection.Open();
            string sql = "select * from Student";
            SqlCommand command = new SqlCommand(sql,connection);
            SqlDataReader reader = command.ExecuteReader();
            while(reader.Read())
            {
                Console.WriteLine(reader[0].ToString());
            }
            connection.Close();
        }

注意:dbpath是绝对路径,可以指定到不同计算机的对应路径。

【讨论】:

    猜你喜欢
    • 2018-10-18
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2012-06-07
    • 2019-11-06
    相关资源
    最近更新 更多