1

VB.Netを使用してクエリする必要がある同一のテーブル構造を持つ2つのSQLiteデータベースがありますが、ほとんどすべての構文を理解できます。クエリ文字列を作成する方法を理解しようとしていますか?このクエリは正しく機能します。

    sb = New StringBuilder("SELECT Master.Name, Master.ID, Master.StartDate, Master.Supervisor, Log.LogType, Log.LogComment FROM Master INNER JOIN Log ON Master.ID = Log.ID WHERE date(Log.LogDate) = '")
    sb.Append(calendarDate.ToString("yyyy-MM-dd"))
    sb.Append("' ORDER BY Master.Name;")
    c = New SQLiteCommand(sb.ToString, _Conn)
    Using dr As SQLiteDataReader = c.ExecuteReader

..。

次の方法で2番目のデータベースを「接続」することもできます。

    sb = New StringBuilder("ATTACH DATABASE '")
    sb.Append(outDBPath)
    sb.Append("' AS db2;")
    c = New SQLiteCommand(sb.ToString, _Conn)
    c.ExecuteNonQuery()
    c.Dispose()

私の質問は、両方のデータベースをクエリするための構文は何ですか?これも可能ですか?以前は、For ... Nextループを使用して、接続を最初のデータベースから2番目のデータベースに変更しました。

4

1 に答える 1

1

http://www.sqlite.org/lang_attach.html :

アタッチされたデータベース内のテーブルは、構文 database-name.table-name を使用して参照できます。テーブルの名前が、接続されているすべてのデータベースとメイン データベースと一時データベースで一意である場合、データベース名のプレフィックスは必要ありません。異なるデータベース内の 2 つ以上のテーブルが同じ名前で、データベース名のプレフィックスがテーブル参照で使用されていない場合、選択されたテーブルは、データベース内で最も最近にアタッチされたテーブルです。

したがって、接続されたデータベースのテーブルdb2.Masterを参照するために使用します。Master

于 2013-02-13T20:06:38.620 に答える