17

私はsqliteデータベースを使用してWindowsアプリケーション.net 2.0に取り組んでいます.私の接続文字列はapp.configのように残ります

<connectionStrings>
<add name="SQLiteDB" 
     connectionString="Data Source=|DataDirectory|database.s3db;version=3;password=mypassword;" 
     providerName="System.Data.Sqlite"/>
</connectionStrings>

接続文字列で、パスワードを「mypassword」として定義しました。このパスワードを削除すると、すべてが正常に機能しますが、パスワード句を使用すると、connection.open() 構文でエラーが発生します

File opened that is not a database file
file is encrypted or is not a database

ネットで検索したところ、いくつかのバージョンの問題が見つかりましたが、接続文字列で述べたように、バージョン 3 のみを使用しています。「バージョン = 3」も削除しようとしましたが、問題は同じままです。

初めてやるのですが、解決策はありますか?

4

3 に答える 3

14

接続文字列でパスワードを指定し、データベースが既に存在する場合、SQLite はデータベースが暗号化されていると想定し、そのパスワードで復号化を試みます。データベースにパスワードをまだ設定していない場合、提供されたパスワードを使用して暗号化されていないデータベースを復号化できないため、「ファイルは暗号化されています」というエラーが発生します。

データベースを削除すると、SQLite は接続文字列のパスワードを使用して新しい暗号化されたデータベースを作成します。ChangePassword()または、次の方法を使用して既存のデータベースを暗号化できます。

// Opens an unencrypted database    
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");    
cnn.Open();    

// Encrypts the database. The connection remains valid and usable afterwards.    
cnn.ChangePassword("mypassword");

参照:暗号化、復号化、および暗号化されたデータベースへのアタッチ

于 2013-04-16T07:41:18.283 に答える
1

SQLite のバージョンを確認してください。一部のデータベースは、sqlite3 でのみ開くことができます。

于 2020-11-22T21:22:56.203 に答える