3

私は最初にこのSQLiteバージョン1.0.77.0(sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.77.0)を持っていて、すべてが正常に機能していました。System.Data.SQLite.dllをバージョン1.0.82.0(sqlite-netFx40-static-binary-bundle-Win32-2010-1.0.82.0)に更新した後、次のメッセージが表示されます。

データベースを開くことができません。接続文字列:'datetimeformat = ISO8601; synchronous = Off; uri = "file:// C:/Users/username/Documents/data/test.db"; version = 3; journal mode = Truncate; default Isolationlevel = ReadCommitted; pooling = True'; エラー:'System.InvalidOperationException:無効な接続文字列:無効なURI

運が悪かったので、file://の代わりにfile:///も試しました。

誰かが私のURIの何が問題なのか、v1.0.82.0では機能しなくなったのにv1.0.77.0では機能したのか教えてもらえますか?

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki(1.0.82.0 == 3.7.14)

4

5 に答える 5

4

正しい接続文字列を取得する最善の方法は、常にSQLiteConnectionStringBuilderクラスを使用してそれらを生成することです。

SQLiteConnectionStringBuilder conn_builder = new SQLiteConnectionStringBuilder 
{ 
   DateTimeFormat = SQLiteDateFormats.ISO8601,
   SyncMode = SynchronizationModes.Off,
   Version = 3,
   JournalMode = SQLiteJournalModeEnum.Truncate,
   DefaultIsolationLevel = System.Data.IsolationLevel.ReadCommitted,
   Pooling = true,
   Uri = new Uri(@"c:\tmp\db.sqlite").AbsoluteUri
 };
 string conn_str = conn_builder.ConnectionString;

が機能しない場合Uriは、代わりに設定してみてくださいDataSource(ローカル ファイルを使用している場合)。

簡単に確認すると、 がSQLiteConnection.csDataSourceで以前Uriに評価され、それよりも優先されることがわかります。そのため、処理にバグがある場合は、DataSource を使用すると回避できる場合があります。Uri

于 2012-10-05T08:51:05.137 に答える
2

バージョン 1.0.82.0 以降のドキュメントによると、次のように変更されました。

新しい FullUri 接続文字列プロパティを使用して、URI ファイル名のサポートを追加します。

例:

var connection = new SQLiteConnection("FullUri=file:mydb.sqlite?cache=shared");
于 2016-10-14T20:59:32.883 に答える
1

以下は私にとってはうまくいきます。次の例では、データソースを使用できません

FullUri=file::memory:?cache=shared
于 2013-10-30T04:54:55.863 に答える
0

接続文字列を基本に落としてから、オプションを追加する必要があると思います。

SQLite 接続文字列オプションの例については、このサイトをご覧ください。

http://www.connectionstrings.com/sqlite

3 /// は、uri 内のスペースをエスケープしようとしている場合にのみ有効です。また、アクセス許可がある場合に備えて、ユーザー フォルダーから c:\ のルートに db を移動してみてください。 DB にアクセスすることは無効であり、より単純な接続文字列を試すことも意味します。

幸運を

于 2012-10-05T07:21:04.907 に答える
0

これらの URI ファイル名の例を参照してください。ただし、URI (3 つのスラッシュを含む) は正しいように見えます。

于 2012-10-05T07:22:20.403 に答える