を考える:テーブルT
sqlite:選択した列の列IDを取得する方法は?
T
が10列を含むテーブルと
- のSQLiteデータベース -
C0
、C1
...C9
を。 - OK
select C3,C2 from T
に対応する
sqlite3_stmt
ポインタが、私はこのようなメソッドの
sqlite3_column_XXX
ファミリを使用して、選択した列の値(
http://www.sqlite.org/capi3ref.html#sqlite3_column_blob)、取得することができます:私は必要なもの
sqlite3_stmt *s;
sqlite3_prepare_v2(db, query, sizeof(query), &s, NULL);
while ((result = sqlite3_step(s)) == SQLITE_ROW)
{
const char *v3 = reinterpret_cast<const char *>(sqlite3_column_text(s, 0);
const char *v2 = reinterpret_cast<const char *>(sqlite3_column_text(s, 1);
}
です選択された列の実際のインデックス。v3
の場合は3、v2
の場合は2です。
動機付け:返された文字列値を実際の列型に解析できるようにしたいと考えています。実際、私のスキーマでは、c3
はdatetime
であり、sqliteはTEXT
として扱います。だから、sqlite3_column_type(s, 0)
戻りSQLITE3_TEXT
が、(pragma table_info(T)
から入手可能)テーブルメタデータは、カラムの意図タイプである文字列datetime
を保持します。それを知って、返された文字列を、例えば、エポック以降のそれぞれのunix時間に解析することができます。
しかし、どのように私は、テーブルの列のインデックスにクエリの列インデックスにマッピングすることができます
- クエリ列0から>テーブルの列3
- クエリ列1から>テーブルのカラム2
をありがとう。
あなたが関心の高いレベルでの情報の並べ替えを埋め込むと考えたことがありますか? *テーブルバーからfooを問い合わせることを知っている*のコードは、ある列の日付が必要だと宣言することができます。それ以外の場合は、実際には設計されていないシステムからのイントロスペクションに頼るか、それをうまくサポートすることが期待されます。 –