前回予告どおり今回は取得したMP3タグデータをExcelへの転記ではなくSQLiteデータベースに取り込んでみようと思います。
SQLのInsert文でデータを取り込む
Sub GetMusicFileProperty() n = 0 ReDim MusicFileProperty(n) FileSearch "G:\Music\" ReDim Preserve MusicFileProperty(UBound(MusicFileProperty) - 1) '①今回変更部分------------------- SQLite3dll_Connect SQLite_MusicData_Insert '------------------------------ End Sub
上記は前回作成した「GetMusicFileProperty」です。
①の部分はセルへの転記のためのコードが記載されていましたが、今回新たにSQLiteへのデータ挿入のための
「SQLite_Music_Insert」を作成して置き換えました。
Sub SQLite_MusicData_Insert() Dim SQLiteDB_Handle As Long Dim SQLiteFullPath As String Dim myStmtHandle As Long Dim mySQL As String SQLiteFullPath = ThisWorkbook.Path & "\MusicDatabase.db3" SQLite3Open SQLiteFullPath, SQLiteDB_Handle Dim i As Long For i = 0 To UBound(MusicFileProperty) '②MP3タグを利用してSQL文を作成 mySQL = "Insert Into MusicDatabase Values(" & _ "'" & MusicFileProperty(i)(0) & "'," & _ "'" & MusicFileProperty(i)(1) & "'," & _ "'" & MusicFileProperty(i)(2) & "'," & _ "'" & MusicFileProperty(i)(3) & "'," & _ "'" & MusicFileProperty(i)(4) & "'," & _ "'" & MusicFileProperty(i)(5) & "'," & _ "'" & MusicFileProperty(i)(6) & "'," & _ "'" & MusicFileProperty(i)(7) & "'," & _ "'" & MusicFileProperty(i)(8) & "'," & _ "'" & MusicFileProperty(i)(9) & "')" SQLite3PrepareV2 SQLiteDB_Handle, mySQL, myStmtHandle SQLite3Step myStmtHandle SQLite3Finalize myStmtHandle Next i SQLite3Close SQLiteDB_Handle End Sub
今回は記載していませんが、モジュールレベル変数としてMusicFilePropertyを宣言していて、その中にMP3タグデータが格納されています。
②データ挿入のSQLの構文は
Insert Into テーブル名 Values(挿入データ)
上記はテーブルの全ての列にデータを挿入する際の構文です。
実際のテーブルの列の並びと同じように挿入データを記載します。
今回のテーブルのデータ型は2列目(Year)と6列目(No)がInteger型で作成していますが、
SQL文内では文字列として挿入の表現をしています。
あまり行儀は良くないかもしれませんが、テーブル側の型に合わせて自動で変換してくれているようです。
文字列の挿入する場合は挿入するデータを「’(シングルコーテーション)」で囲ってください。
SQL文が完成後は以前にご紹介したテーブル作成のCreate分と同じように
・SQLite3PrepareV2
・SQLite3Step
・SQLite3Finalize
以上3つを順番に実行すればSQLiteデータベースにデータ挿入されます。
ちなみに今回のコードでは返り値を受けていませんが、上記3つのSQLite構文はFunctionなので返り値を調べることで正常終了したかエラーが発生しているのか判定することが出来ます。
まとめ
お作法さえ分かってしまえば、Accessへ挿入するときと殆ど変わらない手順で実行することが出来ることがわかりました。
ここまででSQLiteデータベースの作成、MP3タグデータの収集、収集したデータをSQLiteデータベースへの挿入までが完成しました。
次回はSQLiteデータベースからデータを抽出してExcelへ転記してみようと思います。
※
SQLiteは日付・時間型の処理がちょっとややこしいみたいなので、いったん文字列型で挿入する逃げを打っています。
ここは調べて対応するつもりです。