1

アプリケーションでsqlite.net dllを含むsqlite データベースを使用しています。名前空間はFinisar.sqlite です。トランザクションを使用してデータベースにエントリを挿入する際に問題が発生しました。接続を開くと、「データベース ファイルを開けません」という例外がスローされます。

私はそれをグーグルで検索しますが、解決策は接続文字列の変更のようなものです。そのプロセスに従うと、finisar は無効なパラメーターとして例外を返します。

SQLiteConnection db = new SQLiteConnection(f_strConnStr);

db.Open();

**Valid parameters are:** 

Data Source=<database file>  (required)

Version=<version of SQLite (2 or 3)>            (default: 2)

New=True|False                  (default: False)

Compress=True|False                 (default: False)

UTF8Encoding=True|False             (default: False)

UTF16Encoding=True|False            (default: False)

Cache Size=<N>                  (default: 2000)

Synchronous=Full|Normal|Off             (default: Normal)

DateTimeFormat=ISO8601|Ticks|CurrentCulture     (default: ISO8601)

Compatibility=[old-date-format][,old-binary-format] (default: None)

接続文字列のプール、ジャーナルモード=オフなどの解決策を試しましたが、何もうまくいきません。パラメータが無効なため、パスワードで保護されたファイルを作成できません。

このパラメータ以外は追加できません。この問題に関する解決策をお持ちの方がいらっしゃいましたら、ご協力ください。

前もって感謝します。

4

1 に答える 1

3

したがって、ここで多くのことがうまくいかない可能性があります。

  1. SQLite データベースが入っているフォルダーです。書き込み権限がありません。
  2. データベースは別の によってすでに開かれていますSQLiteConnection
  3. 接続文字列が間違っています。接続文字列をプルしているのは明らかに変数であるため、これはありそうにないと思います。同じ文字列を使用したデータが必要な場合もあると信じなければなりません。

#2を改善するには、常に次のようにデータにアクセスする必要があります。

using (SQLiteConnection c = new SQLiteConnection(f_strConnStr))
{
    c.Open();
    ...
}
于 2013-07-24T09:34:59.233 に答える