5

sqlite3のデータ型について質問があります。

の値は、SQLITE_INTEGER値の大きさに応じて1、2、3、4、6、または8バイトに格納できるため、SQliteデータベースの列に格納されてSQLITE_INTEGERいることがわかっている場合、この列の値を知るにはどうすればよいですか。 4バイトまたは6〜8バイトの整数、または値を取得するためにどちらを使用する必要があるか、sqlite3_column_int()またはsqlite3_column_int64()

sqlite3_column_bytes()この場合使用できますか?ただし、ドキュメントによると、sqlite3_column_bytes()主にTEXTまたはBLOBに使用されます。

ありがとう!

4

1 に答える 1

2

SQLiteがレコードにステップインすると、すべての整数値が64ビットに拡張されます。
sqlite3_column_int()オーバーフローをチェックせずに、その値の下位32ビットを返します。

を呼び出すとsqlite3_column_bytes()、SQLiteは値をテキストに変換し、文字数を返します。

整数値を読み取る前に、その大きさを知ることはできません。その後、レコード形式のドキュメントのリストでその値の可能な最小形式を確認できますが、整数値が32ビットに切り捨てられないようにする場合は、常にを使用するsqlite3_column_int64()か、大きな値を取得する必要があります。そもそもDBに書き込まれることはありません(可能な場合)。

于 2012-12-12T07:55:50.330 に答える