2012-12-12 25 views
5

我有一個關於sqlite3中的數據類型的問題。SQLITE_INTEGER值字節

作爲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。

謝謝!

回答

1

當SQLite步入一個記錄時,所有的整數值都被擴展爲64位。
sqlite3_column_int()返回該值的低32位而不檢查溢出。

當您撥打sqlite3_column_bytes()時,SQLite會將該值轉換爲文本並返回字符數。

在讀取它之前,您無法知道整數值有多大。 之後,您可以在record format documentation中查看該值的最小可能格式的列表,但是如果要確保該整數值永不會被截斷爲32位,則必須始終使用使用sqlite3_column_int64(),或確保大值得從未寫入數據庫(如果可能的話)。

+0

謝謝!所以我想我必須首先獲取sqlite3_column_int64()的值,然後將其截斷爲32位,如果它在32位值的範圍內。任何其他方法? – Lewis