2

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

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

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

我在网上看过

AttachDbFilename =|DataDirectory|\Database.mdf

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

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

4

3 回答 3

0

如果文件在同一个程序集文件夹中,您可以使用它

    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);
于 2013-09-10T13:10:43.017 回答
0

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

并选择数据库(数据库应与您的 dblog 一起保存在您的 |DataDirectory| 中)>> 选择该数据库。>> 保存。

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

你必须给命名空间: using System.Data.SqlServerCe;

希望这会解决。

接受是否可行并关闭问题

于 2014-07-31T20:16:20.407 回答
0

有一种方法可以通过对我有用的代码来获取数据库的 .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();
于 2017-07-23T06:43:13.110 回答