11

プロジェクトを別のサーバーにデプロイしたいので、相対パスを使用して接続文字列を指定できるようにしたいと思います。私はそれを機能させることができないようで、それにいくつかのトリックがあるかどうか知りたいです...?

4

3 に答える 3

6

これはどう?

"Data Source=|DataDirectory|mydb.db;..."

|DataDirectory|アプリが配置されているディレクトリを指していると思います。私はNHibernateを使用しており、以下で動作します:

<add key="hibernate.connection.connection_string"
       value="Data Source=|DataDirectory|mydb.db;Version=3;Compress=False;synchronous=OFF;" >
于 2008-12-28T11:47:45.050 に答える
6

提案

アプリで絶対パスを作成し、それを接続文字列で渡すことができます。

したがって、データベース ファイルがdatabaseアプリケーション フォルダーのサブフォルダーにあることがわかっている場合は、次のようにすることができます (C#):

    string relativePath = @"database\myfile.s3db";
    string currentPath;
    string absolutePath;
    string connectionString;

    currentPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
    absolutePath = System.IO.Path.Combine(currentPath,relativePath);

    connectionString = string.Format("DataSource={0}", absolutePath);

    SQLiteConnection cnn = new SQLiteConnection(connectionString);

(誰かがおそらく現在のパスを取得する方法について私を修正できます)。

于 2008-11-24T18:18:42.130 に答える
2

このような:

String currentPath = System.IO.Path.GetDirectoryName( Application.ExecutablePath );

于 2008-12-06T00:23:05.603 に答える