2

service.cs ファイルでデータベースのパスを設定しようとするときに、C# でローカル ディレクトリへのパスを設定する方法を知っていますか? (私はVS2010で開発しています)

.mdf(SQL Server) データベースを使用する winforms プログラムを開発しました。プログラムは、SQL Server 接続文字列を介してデータベースと通信します。

mo でデータベースのパスをハードコーディングしましたが、現在のディレクトリを指す方法を知りたいです。

オンライン見てきました

AttachDbFilename =|DataDirectory|\Database.mdf

しかし、接続が開かないため、うまくいかないようです。

また、使用してみましたEnvironment.CurrentDirectoryCurrentDirectory、奇妙なことに名前空間にはありません。

4

3 に答える 3

0

ソリューション エクスプローラーに移動 >> プロジェクトを右クリック >> プロパティをクリック >> 設定タブに移動 >> Make name: MyConnectionString Type:(connection string) Scoper: Application

DBを選択します(Dbはdblogとともに| DataDirectory |に保持する必要があります)>>そのDBを選択します。>>保存します。

次に、このコードを接続 SqlCeConnection cnn = new SqlCeConnection(Properties.Settings.Default.MyConnectionString); に使用します。

名前空間を指定する必要があります: using System.Data.SqlServerCe;

これが解決することを願っています。

これが機能する場合は受け入れて、質問を閉じます

于 2014-07-31T20:16:20.407 に答える
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

データベースの .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 に答える