Sqliteデータベースがあり、データベースのパスワードを使用してC#プログラムから接続したいと思います。 Navicatを使用していて、パスワード「test」を使用してデータベースファイルの暗号化を設定すると、コードによって接続文字列は次のようになります。
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;Password=\"test\";");
または
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;Password=test;");
しかし、これは機能しません。
エラーは次のとおりです:File opened that is not a database file file is encrypted or is not a database
次のようなパスワードなしでデータベースに接続できます。
_connection = new SQLiteConnection("Data Source=MedExpress.db;Version=3;");
私の質問は、sqliteデータベースにパスワードを設定し、System.Data.SQLite
を使用してC#プログラムから接続するにはどうすればよいですか。
これはパスワード付きの接続文字列です
Data Source=filename;Version=3;Password=myPassword;
あなたが述べたように、あなたはsqlite暗号化を設定するためにnavicatを使用します。暗号化とは、データベースを暗号化したことを意味し、データベースにパスワードを設定することとは異なります。
データベースにパスワードを設定するには、このコードを試してください。
//create file
SQLite.SQLiteConnection.CreateFile("c:\\mydatabase file.db3")
Dim cn As New SQLite.SQLiteConnection
//set password
cn.ChangePassword("paxword")
//remove password
cn.ChangePassword("")
最初に暗号化を削除します。
非常に昔のことですが、これが接続文字列とパスワードを使用してLITEDBで機能する私のソリューションです。ただし、最初にデータベースにパスワードを設定する必要があることを忘れないでください。このツール(LITE DB Explorer)を使用して、データベースを作成および管理できます。 https://github.com/JosefNemec/LiteDbExplorer
App Configで、次の例のように接続文字列を追加します。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="LiteDB" connectionString="Filename=.\Databases\Data.db"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
そしてC#コードビハインド:
private static string LoadConnectionString(string id = "LiteDB")
{
try {
return ConfigurationManager.ConnectionStrings[id].ConnectionString + ";password=your_pass";
}
catch (Exception loadConnectionStringError)
{
Console.WriteLine("loadConnectionStringError: " + loadConnectionStringError.ToString());
return null;
}
}