• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PowerShellでのSQLiteパスワード接続)

PowerShellでのSQLiteパスワード接続

このQ&Aのポイント
  • PowerShellでSystem.Data.SQLite.dllを使用してSQLiteのdbに接続する方法を教えてください。
  • パスワードで暗号化されたdbに接続しようとするとエラーが発生するため、正しいパスワードの記述方法を知りたいです。
  • System.Data.SQLite.dllが正しく動作していないのか、別の問題があるのかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • kzr260v2
  • ベストアンサー率47% (852/1776)
回答No.1

はい。System.Data.SQLiteの制限となるようです。 今回のような場合は、PowerShellではなくC#でやってみると、原因究明が早まるみたいです。C#では以下のようなエラーとなります。password構文に対応していないという意味です。 System.Data.SQLite.SQLiteException: 'SQL logic error Cannot use "Password" connection string property: library was not built with encryption support, please see "https://www.sqlite.org/see" for more information' 解決のひとつの例としてはSystem.Data.SQLiteではなくMicrosoft.Data.Sqliteを使うことになるようです。こちらはpassword構文に対応しているようです。 ※ 今回の情報は、Googleで以下のようなキーワード検索をしてみたところ、関連情報がヒットしました。 System.Data.SQLite.dll パスワード ※ Microsoft.Data.Sqliteの使い方や制限などは、ドキュメントをご覧ください。またはGoogleなどで以下のようなキーワード検索する方法もあります。 Microsoft.Data.Sqlite サンプル ※ 私がご案内できる程度の情報量しかなくて申しわけないです。もしかしたらMicrosoftのフォーラムのほうが、詳細な案内をしてくれるかもしれません。 開発者向けなので以下が該当しそうな気がします。 https://social.msdn.microsoft.com/forums/ja-jp/home 以上、参考にならなかったらごめんなさい。

shakamandara
質問者

お礼

最終的な目的には至っておりませんが、大幅な前進となりました、 理解を深めることは大切ですね、ご丁寧なアドバイス、本当にありがとうございました。

shakamandara
質問者

補足

C#でやってみました NuGetパッケージ管理からSystem.Data.SQLiteやMicrosoft.Data.Sqliteをそれぞれで試行錯誤試しましたが 暗号化パスワードdbの接続はできませんでした。NuGetのは非対応?(コンパイルは正常終了なのだが) 今度は、System.Data.SQLite.dllを個別ダウンロードして、参照追加で行ったところ以下のコードでPupSQLiteで暗号化パスワード化したdbの接続に成功しました。 sqlite-netFx46-static-binary-bundle-Win32-2015-1.0.99.0.zipをダウンロード、展開されたSystem.Data.SQLite.dllをソリューションに参照追加 vs2019 ターゲットフレームワーク.NET Framework 4.6.1 using System; using System.Data.SQLite; namespace msSqlApp3 { class Program { static void Main(string[] args) { var connectionStringBuilde = new SQLiteConnectionStringBuilder { DataSource = @"C:\temp\sample.db", Password = "psw" }; var cn = new SQLiteConnection(connectionStringBuilde.ToString()); cn.Open(); var cmd = cn.CreateCommand(); cmd.CommandText = "select * from ListA;"; var reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader["MemberID"].ToString()); Console.WriteLine(reader["Fast_name"].ToString()); Console.WriteLine(reader["Last_name"].ToString()); } } } }

関連するQ&A