2011-08-02 19 views
0

私はSQLiteを使用してデータベースファイルに接続する必要のあるDLLを作成しています。 残念ながら、私のdllはExcel AddInとして使用されているので、私のdllがどこにあるのかわかる機会は本当にありません(アプリケーションはExcelのインストールフォルダを参照しています、すべてのReflection.AssemblyはWindows \ GACフォルダまたは他の何か)。長い話が短いので、SQLiteファイルを.dllフォルダに置くことはできません。これは、相対パスで接続文字列を使用しているときに見つからないためです。 "データソース= myfile.SQLite"と、私は元のdllのフルパスを知ることができません。これは、dllがExcel AddInとして使用されているためです。SQLite:リソースファイルへのデータベース接続?

私の考えは、プロジェクトのリソースにSQLiteファイルを追加することでしたが、私はどのようにプロジェクトリソースに通常のSQLite接続文字列で接続できるかわかりません。そうでなければ、私はそれをどのように解決することができるでしょうか?

ありがとうございます!

+0

私はあなたにいくつかの情報を提供するべきだと思います:sqliteデータベースにはアドインが付属しているデータが入っていますか?データの有効期間/所有権とは何ですか。それぞれの使用時に新しい(空のテンプレートまたは最初のテンプレートから)dbを作成できますか、またはデータが長く続く必要がありますか? –

+0

データベースは、アドインによってのみ使用されます。それはアドインによって満たされ(および照会されて)、永続的である必要があります。つまり、メモリ内ストレージはオプションになりません。 – James

答えて

1

ありより少なくより理想的なソリューションの数:

1)オープン/慣例、例えばすることによって決定された位置にSQLiteのDBを作成しますC:\ Data。これはおそらく理想的ではありませんが、SQLiteは実際のデータファイルを必要とします。リソースまたは隔離されたストレージを直接(他のデータベースがありますが、#3を参照してください)。

2)隔離されたストレージを使用し、起動時に隔離されたストレージからデータをコピーし、アプリケーションがシャットダウンすると(または他の「持続的なイベント」で)ファイルを独立したストレージにコピーし直します。

3)VistaDBなどの分離ストレージをサポートするデータベースを使用します。明らかな欠点は、ライセンス費用です(ただし、小額です)。

+0

あなたの返信ありがとう!最後に、Excel Interopを使用してブックへの完全なパスを取得することができました。結局のところ、外部のSQLiteファイルを使用することができます。 – James

関連する問題