テーブル内のフィールドを取得しようとしていますが、テーブルが空であってもそのデータを取得する必要があります。C言語のempyテーブルのSQLite列名
sqlite3_table_column_metadata
はオプションではありません(SQLite3の私のバージョンにコンパイルされていませんでした)。
この情報を取得する手口はありますか?
テーブル内のフィールドを取得しようとしていますが、テーブルが空であってもそのデータを取得する必要があります。C言語のempyテーブルのSQLite列名
sqlite3_table_column_metadata
はオプションではありません(SQLite3の私のバージョンにコンパイルされていませんでした)。
この情報を取得する手口はありますか?
PRAGMA table_info(table_name);
HERESにリンク列名のリストを返します:あなたはあなただけのソースをダウンロードして、あなたが好きなオプションでコンパイルすることができますローカルで実行している場合
を。しかし、それがオプションではない場合でも、メタデータを取得する方法はまだいくつかあります。
sqlite_masterテーブルをクエリできますが、データは可能な限りフレンドリーな形式ではありません。
select sql
from sqlite_master
where type='table' and name='your-table-name';
このクエリは、CREATE TABLE
ステートメントを返します。期待されるフォーマットの驚き。
cインターフェイスから「ドット」コマンドを発行できる場合は、列ヘッダーをオンにしてから、テーブルをクエリできます。これは、sqliteプロンプトから見たものです。
sqlite> .headers on
sqlite> select * from file_stats;
date|file_id|num_lines
だけで列名を持つことによって、データ型を取得するためのデッド簡単な方法はありません。 typeof()関数は、テーブルにデータがなければ何も返しません。
私はプラグマtable_info()関数も含めようとしていましたが、Trevorはそれを私に打ち明けました。あなたがc apiからプラグマ文を発行できるかどうかはわかりません。
ありがとうございました。私はすでにsqlite3_prepareを使用して、ステップ関数の前にsqlite3_column_decltype、sqlite3_column_count、sqlite3_column_nameを使ってテーブルの詳細を取得できます。 – Freaktor