成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于SQLite常見問題解答

移動開發(fā) iOS
本文介紹的是關(guān)于SQLite常見問題解答,主要是我們在學(xué)習(xí)SQLite的時候遇到的一些問題,如何來解決,先來看詳細(xì)內(nèi)容。

關(guān)于SQLite常見問題解答是本文要介紹的內(nèi)容,主要是我們在學(xué)習(xí)SQLite的時候遇到的一些問題,如何來解決呢,我們一起來看內(nèi)容。

1、如何建立自動增長字段?

2、SQLite支持何種數(shù)據(jù)類型?

3、SQLite允許向一個integer型字段中插入字符串!

4、為什么SQLite不允許在同一個表不同的兩行上使用0和0.0作主鍵?

5、多個應(yīng)用程序或一個應(yīng)用程序的多個實例可以同時訪問同一個數(shù)據(jù)庫文件嗎?

(1) 如何建立自動增長字段?

簡短回答:聲明為 INTEGER PRIMARY KEY 的列將會自動增長。

長一點的答案: 如果你聲明表的一列為 INTEGER PRIMARY KEY,那么, 每當(dāng)你在該列上插入一NULL值時, NULL自動被轉(zhuǎn)換為一個比該列中***值大1的一個整數(shù),如果表是空的, 將會是1。 (如果是***可能的主鍵 9223372036854775807,那個,將鍵值將是隨機未使用的數(shù)。) 如,有下列表:

  1. CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER ); 

在該表上,下列語句

  1. INSERT INTO t1 VALUES(NULL,123); 

在邏輯上等價于:

  1. INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123); 

有一個新的API叫做 sqlite3_last_insert_rowid(),它將返回最近插入的整數(shù)值。

注意該整數(shù)會比表中該列上的插入之前的***值大1。 該鍵值在當(dāng)前的表中是唯一的。但有可能與已從表中刪除的值重疊。要想建立在整個表的生命周期中唯一的鍵值,需要在 INTEGER PRIMARY KEY 上增加AUTOINCREMENT聲明。那么,新的鍵值將會比該表中曾能存在過的***值大1。如果***可能的整數(shù)值在數(shù)據(jù)表中曾經(jīng)存在過,INSERT將會失敗, 并返回SQLITE_FULL錯誤代碼。

(2)SQLite支持何種數(shù)據(jù)類型?參見 http://www.sqlite.org/datatype3.html.

(3)SQLite允許向一個integer型字段中插入字符串!

這是一個特性,而不是一個bug。SQLite不強制數(shù)據(jù)類型約束。任何數(shù)據(jù)都可以插入任何列。你可以向一個整型列中插入任意長度的字符串, 向布爾型列中插入浮點數(shù),或者向字符型列中插入日期型值。 在 CREATE TABLE 中所指定的數(shù)據(jù)類型不會限制在該列中插入任何數(shù)據(jù)。 任何列均可接受任意長度的字符串(只有一種情況除外:標(biāo)志為INTEGER PRIMARY KEY的列只能存儲64位整數(shù), 當(dāng)向這種列中插數(shù)據(jù)除整數(shù)以外的數(shù)據(jù)時,將會產(chǎn)生錯誤。

但SQLite確實使用聲明的列類型來指示你所期望的格式。所以,例如你向一個整型列中插入字符串時,SQLite會試圖將該字符串轉(zhuǎn)換成一個整數(shù)。 如果可以轉(zhuǎn)換,它將插入該整數(shù);否則,將插入字符串。這種特性有時被稱為 類型或列親和性(type or column affinity).

(4)為什么SQLite不允許在同一個表不同的兩行上使用0和0.0作主鍵?

主鍵必須是數(shù)值類型,將主鍵改為TEXT型將不起作用。

每一行必須有一個唯一的主鍵。對于一個數(shù)值型列, SQLite認(rèn)為 '0' 和 '0.0' 是相同的,因為他們在作為整數(shù)比較時是相等的(參見上一問題)。 所以,這樣值就不唯一了。

(5)多個應(yīng)用程序或一個應(yīng)用程序的多個實例可以同時訪問同一個數(shù)據(jù)庫文件嗎?

多個進(jìn)程可同時打開同一個數(shù)據(jù)庫。多個進(jìn)程可以同時進(jìn)行SELECT 操作,但在任一時刻,只能有一個進(jìn)程對數(shù)據(jù)庫進(jìn)行更改。

SQLite使用讀、寫鎖控制對數(shù)據(jù)庫的訪問。(在Win95/98/ME等不支持讀、寫鎖的系統(tǒng)下,使用一個概率性的模擬來代替。)但使用時要注意: 如果數(shù)據(jù)庫文件存放于一個NFS文件系統(tǒng)上,這種鎖機制可能不能正常工作。這是因為 fcntl() 文件鎖在很多NFS上沒有正確的實現(xiàn)。

在可能有多個進(jìn)程同時訪問數(shù)據(jù)庫的時候,應(yīng)該避免將數(shù)據(jù)庫文件放到NFS上。 在Windows上,Microsoft的文檔中說:如果使用 FAT 文件系統(tǒng)而沒有運行 share.exe 守護(hù)進(jìn)程,那么鎖可能是不能正常使用的。那些在Windows上有很多經(jīng)驗的人告訴我:對于網(wǎng)絡(luò)文件,文件鎖的實現(xiàn)有好多Bug,是靠不住的。如果他們說的是對的,那么在兩臺或多臺Windows機器間共享數(shù)據(jù)庫可能會引起不期望的問題。

我們意識到,沒有其它嵌入式的 SQL 數(shù)據(jù)庫引擎能象 SQLite 這樣處理如此多的并發(fā)。SQLite允許多個進(jìn)程同時打開一個數(shù)據(jù)庫,同時讀一個數(shù)據(jù)庫。當(dāng)有任何進(jìn)程想要寫時,它必須在更新過程中鎖住數(shù)據(jù)庫文件。但那通常只是幾毫秒的時間。其它進(jìn)程只需等待寫進(jìn)程干完活結(jié)束。典型地,其它嵌入式的SQL數(shù)據(jù)庫引擎同時只允許一個進(jìn)程連接到數(shù)據(jù)庫。

但是,Client/Server數(shù)據(jù)庫引擎(如 PostgreSQL, MySQL, 或 Oracle)通常支持更高級別的并發(fā),并且允許多個進(jìn)程同時寫同一個數(shù)據(jù)庫。 這種機制在Client/Server結(jié)構(gòu)的數(shù)據(jù)庫上是可能的,因為總是有一個單一的服務(wù)器進(jìn)程很好地控制、協(xié)調(diào)對數(shù)據(jù)庫的訪問。如果你的應(yīng)用程序需要很多的并發(fā),那么你應(yīng)該考慮使用一個Client/Server 結(jié)構(gòu)的數(shù)據(jù)庫。但經(jīng)驗表明,很多應(yīng)用程序需要的并發(fā),往往比其設(shè)計者所想象的少得多。

當(dāng)SQLite試圖訪問一個被其它進(jìn)程鎖住的文件時,缺省的行為是返回 SQLITE_BUSY。可以在C代碼中使用 sqlite 3_busy_handler() 或 sqlite 3_busy_timeout() API 函數(shù)調(diào)整這一行為。

小結(jié):關(guān)于SQLite常見問題解答的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-07-13 17:57:15

SQLite

2013-05-23 09:49:49

Chrome for google

2009-10-13 14:56:00

CCNA培訓(xùn)

2010-09-13 14:43:47

無線技術(shù)常見問題

2023-10-10 08:01:13

2010-12-27 14:50:16

Windows 部署服

2020-08-20 10:41:28

云計算云安全數(shù)據(jù)

2010-05-12 17:04:20

BlackBerry開

2011-08-31 16:06:50

LuaWeb開發(fā)

2021-02-26 22:54:06

云計算公有云私有云

2010-07-28 11:25:08

Flex滾動條

2013-03-04 13:58:10

2011-05-10 15:30:22

SEO

2017-06-12 15:51:11

數(shù)據(jù)中心布線運維

2011-07-21 11:19:51

JAVA

2015-06-30 12:39:33

公有云問題解答

2025-03-28 10:19:06

2009-09-02 17:14:12

郵件服務(wù)器

2010-08-19 10:44:47

DB2 常見問題

2020-10-16 08:24:40

物聯(lián)網(wǎng)網(wǎng)關(guān)物聯(lián)網(wǎng)IOT
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久男人 | 日韩视频区 | 久久久久久久久久久久久九 | 久久伊 | 久久国产精品免费一区二区三区 | 国产精品成人品 | 99re视频在线观看 | 欧美日韩一卡二卡 | 欧美福利视频 | 国产精彩视频在线观看 | 亚洲天堂av网 | www.99热.com | 国产成人久久av免费高清密臂 | 久久亚洲国产精品日日av夜夜 | 国产精品久久久久无码av | 在线观看视频一区 | 国产成人久久av免费高清密臂 | 欧美一区二区三区在线 | 欧美日韩中文字幕在线播放 | 一级欧美黄色片 | 人人干人人草 | 精品国产视频 | www免费视频 | 一级片在线播放 | 91久久久久久 | 亚洲视频欧美视频 | 国产精品海角社区在线观看 | 久久99一区二区 | 97人人澡人人爽91综合色 | 国产精品久久久久久久久免费丝袜 | 久久国产欧美日韩精品 | 国产高清精品一区二区三区 | 国产美女久久久 | 精品日韩一区二区 | 一区二区视频在线 | 成人精品国产一区二区4080 | 中文字幕一区二区三区精彩视频 | 久久久久久亚洲精品 | 久久国产精品-国产精品 | 国产成人精品一区二区三区在线 | 亚洲在线|