2016-03-23 9 views
0

私はSELECTクエリを実行するときにsqlite3の仕組みを理解しようとしています。結果を読むには、sqlite3_stepを使用して次の行に移動する必要があります。sqlite3はSELECTクエリデータをどのように管理しますか?

sqlite3_prepare_v2(db, "select name;", -1, &stmt, NULL); 

sqlite3_bind_int(stmt, 1, 16);                 

while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {            
    printf("%s\n", sqlite3_column_text(stmt, 0)); 
} 

sqlite3_finalize(stmt); 

私の質問は、SELECT、データが保存されている方法ですか?メモリ内またはファイル内?また、結果全体をループしたり、SELECTクエリ全体をメモリに読み込まなくても、特定の行を読み取るにはどうすればよいですか?

答えて

1

データはディスク上のデータベースファイルに保存されます。照会されたデータはメモリにロードされます。

結果の行はオンデマンドで計算されるため、クエリは完全にメモリ内にある必要はありません。現在の行だけがアクセス可能で、唯一行えるのは次の行に進むことです。

すべての結果行をステップ実行しない場合は、目的の行のみを返すようにクエリを変更します。

+0

そのお返事ありがとうございます。だから私はクエリ結果の特定の行に入ることができないと言っているのですか?だから私はリセットし、私が欲しい行に到達するまでステップする必要がありますか? – Jona

関連する問題