最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQLite 中文指南之FAQ第6/6頁

 更新時間:2008年09月12日 18:09:17   作者:  
sqllite使用過程中碰到的一些問題解決,中文版

(14) 我刪除了很多數據但是數據庫文件并沒有減小,是不是 Bug?

不是的。當你從 SQLite 刪除數據之后,未使用的磁盤空間被添加到一個內在的“空閑列表”中用于存儲你下次插入的數據。磁盤空間并沒有丟失,但是也不向操作系統(tǒng)返回磁盤空間。

如果你刪除了大量的數據且想要減小數據庫文件,執(zhí)行 VACUUM命令。VACUUM 命令會清空“空閑列表”,把數據庫尺寸縮到最小。注意, VACUUM 會耗費一些時間(在 Linux 系統(tǒng)下大約0.5秒/兆)并且要使用兩倍于數據庫文件大小的磁盤空間。

對于SQLite version 3.1, 替代VACUUM命令的一個方法是auto-vacuum模式,用 auto_vacuum pragma語法開啟該模式。

(15) 是否能將 SQLite 用于商業(yè)用途而不用交版權費用?

可以。SQLite 是公開的。代碼的任何部分都沒有聲明所有權。你可以用它來做你想要的任何事情。

(16) 如何插入有單引號(')的字符串?

使用雙單引號即可,例如:

INSERT INTO xyz valueS('5 O''clock');


插入數據庫的是:5 0'clock。

(17) SQLITE_SCHEMA 錯誤代表什么?

在 SQLite 版本3中,當一個預處理 SQL 語句不合法不能執(zhí)行時就會返回一個 SQLITE_SCHEMA 錯誤。當這個錯誤發(fā)生時,該語句應當用 sqlite3_prepare() API函數重新編譯。在 SQLite 版本3中,只有使用 sqlite3_prepare ()/sqlite3_step()/sqlite3_finalize() API函數執(zhí)行 SQL 才會發(fā)生這個錯誤,而使用 sqlite3_exec(). 則不會。這與版本2不同。

大部分發(fā)生這個錯誤的原因是當 SQL 預處理完時數據庫已經改變了(可能是被另一個進程改變的)。還可能有如下原因:

* 對一個數據庫進行DETACH操作
* 對一個數據庫進行VACUUM操作
* 一個用戶函數定義被刪除或改變了。
* 一個排序定義被刪除或改變了。
* 一個授權函數改變了。

解決的辦法是重新編譯并再次嘗試執(zhí)行。所有涉及 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 函數的都應當重新編譯。參見下例:

int rc;
sqlite3_stmt *pStmt;
char zSql[] = "SELECT .....";

do {
/* Compile the statement from SQL. Assume success. */
sqlite3_prepare(pDb, zSql, -1, &pStmt, 0);

while( SQLITE_ROW==sqlite3_step(pStmt) ){
/* Do something with the row of available data */
}

/* Finalize the statement. If an SQLITE_SCHEMA error has
** occured, then the above call to sqlite3_step() will have
** returned SQLITE_ERROR. sqlite3_finalize() will return
** SQLITE_SCHEMA. In this case the loop will execute again.
*/
rc = sqlite3_finalize(pStmt);
} while( rc==SQLITE_SCHEMA );



(18) 為什么ROUND(9.95,1) 返回 9.9 而不是 10.0? 難道9.95 不該向上進位么?

SQLite 內部使用二進制運算,9.95用 64-bit IEEE 浮點數 ( SQLite 內部使用的) 表示為 9.949999999999999289457264239899814128875732421875。所以當你輸入 "9.95"時, SQLite 就理解為上述的數字,進而四舍五入得到9.9。這個問題在處理浮點二進制數總會產生。通常的規(guī)則是十進制的有限浮點數通常無法表示為二進制有限浮點數,只能由最接近的二進制數來代替。這個近似數會非常接近原數,但總一些細微的不同,所以可能無法得到你預期的結果。

相關文章

最新評論

武安市| 孝昌县| 祁门县| 花垣县| 长汀县| 杭锦后旗| 西丰县| 巫溪县| 潮州市| 百色市| 五常市| 衢州市| 缙云县| 台安县| 呼和浩特市| 禄丰县| 安塞县| 横山县| 禹州市| 丽水市| 油尖旺区| 临颍县| 迁安市| 米泉市| 武邑县| 清远市| 徐水县| 河源市| 乡城县| 永泰县| 仁布县| 襄樊市| 含山县| 中西区| 三都| 湾仔区| 乌海市| 沂源县| 论坛| 宜章县| 贡嘎县|