複数のSQLiteのファイルをするには?

解決


23号車  2014-10-18 04:27:59  No: 46752

Windwos7 Pro上で、Delphi XE5 Proを使用。
FireDACでSQLiteを接続し、使用しています。
PHPなどでは、複数のSQLiteのDatabaseファイルを接続し、双方のテーブルを結合して使用可能のようです。
FDConnectionを複数準備して、それぞれにDatabaseファイルを指定し、TFDQueryのConnectionにFDConnectionを1つ指定して、
FDConnectionごとに個別にDatabaseファイルからデータ抽出することは可能です。
今回、Databaseファイルをまたぎ、結合して複数のテーブルからデータ抽出をしたいと思っています。
どなたか、アイディアなどの情報提供をお願いします。


igy  2014-10-19 05:32:53  No: 46753

やりたいのは、

SQLiteで複数DBへの同時接続
http://syo.cocolog-nifty.com/freely/2007/09/sqlitedb_3511.html

のようなことですか?


23号車  2014-10-20 17:40:43  No: 46754

>やりたいのは、
>
>SQLiteで複数DBへの同時接続
>http://syo.cocolog-nifty.com/freely/2007/09/sqlitedb_3511.html
>
>のようなことですか?
はい、そうです。
同様なことの実現方法が、具体的にイメージできていない状況です。


igy  2014-10-20 17:43:34  No: 46755

>同様なことの実現方法が、具体的にイメージできていない状況です。

試してはいないのですが、
そのSQL文と、同じようなことを実行して、実現は、できないのですか?


23号車  2014-10-21 01:58:32  No: 46756

ありがとうございます。解決しました。

アドバイスのそのままですが、以下の様に試しました。
あとは、コード記述など工夫してみます。

FormCreateメソッドなどの初期処理で、
FDConnection1.ExecSQL(attach database "fuga.db" as fuga');

データ抽出するメソッドの中で、
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add('select hogehoge.*, fugafuga.* from hogehoge, fuga.fugafuga fugafuga where hogehoge.keyfield=fugafuga.keyfield');
FDQuery1.SQL.Open;

以上、ありがとうございました。


Sara  2014-10-21 01:59:11  No: 46757

こんな感じで、いけると思われる・・・

   FDQuery1.SQL.Text := ' attach database "C:\testDB\DB2.DB" as DB2 ';
   FDQuery1.ExecSQL;
   FDQuery1.SQL.Text := 'select * from Table1 as t1, DB2.Table1 as t2 where t1.ID = t2.ID ';
   FDQuery1.Open;
   Memo1.Clear;
   while not FDQuery1.EOF do begin
       Memo1.Lines.Add(FDQuery1.FieldByName('Fieldname').AsString);
       FDQuery1.Next;
   end;
   FDQuery1.Close;
   FDQuery1.SQL.Text := ' Detach database DB2 ';
   FDQuery1.ExecSQL;


山本隆  2014-10-21 04:15:47  No: 46758

公式ドキュメントにあります。

Delphi アプリケーションからの SQLite データベースの管理
http://docwiki.embarcadero.com/RADStudio/XE5/ja/FireDAC_%E3%81%A7%E3%81%AE_SQLite_%E3%81%AE%E4%BD%BF%E7%94%A8#Delphi_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.8B.E3.82.89.E3.81.AE_SQLite_.E3.83.87.E3.83.BC.E3.82.BF.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E7.AE.A1.E7.90.86


23号車  2014-10-21 17:12:39  No: 46759

みなさんのアドバイス、とても助かります。
ありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加