SQLiteのテーブル構造を取得するには

データセットとか使ってればそんな必要もないでしょうが、コード内からテーブル構造を取得して云々するコトもあるわけです。

SQL Server なら sp_columns  を呼べばいいわけですが、SQLiteでは?
cmd.exe 呼び出して .schema 叩いて出力をリダイレクトさせて…
なんて力業に出る必要はありませんでした。

System.Data.SQLite にきちんとその道が用意されています。
こんな感じで取得します。

Dim strConnectionString As String = "data source = " & strSQLiteFileName

Using cnSQLite As New SQLiteConnection(strConnectionString)
     cnSQLite.Open()
     '---スキーマ情報を取得する
     Dim objSchemaInfo As DataTable
     Dim strTableInfo() As String = {Nothing, Nothing, "テーブル名", Nothing}
     objSchemaInfo = cnSQLite.GetSchema("Columns", strTableInfo)

     '---取得したスキーマ情報を格納する
     For Each objRow As DataRow In objSchemaInfo.Rows
          Console.Writeline(objRow!COLUMN_NAME.ToString)
     Next

     cnSQLite.Close()
End Using

小さな嵌り所としては、”COLUMN_NAME”を取ってくるのに”!”を使うところ。
“.” ではないところが要注意です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree