如何更改数据库文件的路径?

Posted

技术标签:

【中文标题】如何更改数据库文件的路径?【英文标题】: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,有更新吗?请检查我的答案是否适合您。 【参考方案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是绝对路径,可以指定到不同计算机的对应路径。

【讨论】:

以上是关于如何更改数据库文件的路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看和更改mysql数据库文件存放位置

编译安装的mysql如何更改文件路径

如何更改MySQL数据库的默认目录位置

如何更改SQL Server2008默认数据库的存储路径

如何用R读取数据

Paradox DB:如何以编程方式更改数据库路径