如何在 C# 中为.mdf Service.cs 文件中的数据库设置本地目录的路径

本文关键字:设置 数据库 路径 文件 中为 mdf cs Service | 更新日期: 2023-09-27 18:30:57

在尝试在 service.cs 文件中为 datbase 设置路径时,您知道如何在 c# 中设置本地目录的路径吗?(我正在VS2010中开发)

我开发了一个使用.mdf(SQL Server)数据库的winforms程序。程序通过 SQL Server 连接字符串与数据库通信。

我已经硬编码了 mo 处的 db 路径,但想知道如何指向当前目录。

我在网上看到过

AttachDbFilename =|DataDirectory|'Database.mdf

但它似乎对我不起作用,因为连接不会打开。

我也尝试使用Environment.CurrentDirectory但是CurrentDirectory奇怪的是不在命名空间中。

如何在 C# 中为.mdf Service.cs 文件中的数据库设置本地目录的路径

如果文件位于同一程序集文件夹中,则可以使用它

    string folder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.ConnectionStrings.ConnectionStrings["myCS"].ConnectionString = config.ConnectionStrings.ConnectionStrings["myCS"].ConnectionString.Replace("#folder#",folder);
    config.Save(ConfigurationSaveMode.Full, true);

转到解决方案资源管理器>>右键单击项目>>单击"属性">>转到"设置"选项卡>> 名称:我的连接字符串类型:(连接字符串) 作用域器:应用程序

并选择数据库(Db应保留在您的 |数据目录|以及您的 dblog)>>选择该数据库。>>保存它。

然后使用此代码进行连接 SqlCeConnection cnn = new SqlCeConnection(Properties.Settings.Default.MyConnectionString);

你必须给出命名空间:使用 System.Data.SqlServerCe;

希望这会解决。

接受这是否有效并关闭问题

一种方法可以通过对我有用的代码获取 databese 的 .mdf 和 .ldf,为此,使用连接字符串打开与数据库的连接准备 SQL 命令,使用查询

select physical_name from sys.database_files where type = 0 

然后执行命令,顺便说一下,type = 0 是用于 MDF,type = 1是用于 LDF,你也可以直接在 SSMS 中使用此查询

这是示例代码,请记住,需要获取连接字符串

        string _mdfCommand = "select physical_name from sys.database_files where type = 0";
        string _ldfCommand = "select physical_name from sys.database_files where type = 1";
        SqlCommand GetSQLData = new SqlCommand();
        SqlConnection connection = new SqlConnection(connectionString);
        connection.Open();
        GetSQLData.CommandText = _mdfCommand;
        GetSQLData.Connection = connection;
        string mdf_Path= (string)GetSQLData.ExecuteScalar();
        GetSQLData.CommandText = _ldfCommand;
        GetSQLData.Connection = connection;
        string ldf_Path= (string)GetSQLData.ExecuteScalar();
        connection.Close();