The SQLite data base holds metadata in the table sqlite_master.
Table definition
The table definition is as follows:
Example: ''CREATE TABLE [table2] ([t2c1] VARCHAR, [t2c2] VARCHAR, CONSTRAINT "p_key" PRIMARY KEY ([t2c1], [t2c2]) ON CONFLICT ABORT)''
find defined tables
The following procedure returns a list of defined tables. Its functionality is equivalent to the tclodbc command db tables.
proc GetTables {{NameStart ""}} { return [db eval "select tbl_name from sqlite_master\ where (type = \"table\") and (tbl_name like \"${NameStart}%\")"] }
find defined columns of a table
The functionality is equivalent to the tclodbc command db columns.
proc GetColumns Table { set lRes {} set SQL [lindex [db eval "select sql from sqlite_master\ where type = \"table\" and tbl_name = \"${Table}\""] 0] # > Get outer paranthesis if {[regexp {\((.*)\)} $SQL match SQL]} { # Keys might be added at the end: CONSTRAINT ... # > Replace any (.,.,.) by * to get spurious "," away. regsub -all {\([^)]*\)} $SQL * SQL # > now split at , and get all data at the start within \[...\] foreach VarSpec [split $SQL ,] { if {[regexp\ {^[ \t]*\[([^\]]*)\]} $VarSpec match VarName]}\ { lappend lRes $VarName } } } return $lRes }
Background:
See also: