freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

sqlite開發(fā)入門手冊-wenkub

2023-07-10 22:27:47 本頁面
 

【正文】 步機(jī)制下,并發(fā)性能很難高效。對于超大數(shù)據(jù)量的存儲,甚至不能提供支持。2. 數(shù)據(jù)量較大: 在這種情況下,不應(yīng)該選擇SQLite。1. C/S應(yīng)用: 在需要給客戶進(jìn)行Demo時,可以使用SQLite作為我們的后臺數(shù)據(jù)庫,和其他關(guān)系型數(shù)據(jù)庫相比,使用SQLite減少了大量的系統(tǒng)部署時間。 在這種應(yīng)用中,我們可以用SQLite緩沖這部分歷史數(shù)據(jù)。由于SQLite在運(yùn)行時占用的資源較少,而且無需任何管理開銷,因此對于PDA、智能手機(jī)等移動設(shè)備來說,SQLite的優(yōu)勢毋庸置疑。 SQLite是目前最流行的開源嵌入式數(shù)據(jù)庫,和很多其他嵌入式存儲引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持關(guān)系型數(shù)據(jù)庫所具備的一些基本特征,如標(biāo)準(zhǔn)SQL語法、事務(wù)、數(shù)據(jù)表和索引等。事實(shí)上,盡管SQLite擁有諸多關(guān)系型數(shù)據(jù)庫的基本特征,然而由于應(yīng)用場景的不同,它們之間并沒有更多的可比性。1). 管理簡單,甚至可以認(rèn)為無需管理。2). 操作方便,SQLite生成的數(shù)據(jù)庫文件可以在各個平臺無縫移植。3). 可以非常方便的以多種形式嵌入到其他應(yīng)用程序中,如靜態(tài)庫、動態(tài)庫等。4). 易于維護(hù)。綜上所述,SQLite的主要優(yōu)勢在于靈巧、快速和可靠性高。 在SQLite的官方文檔中是這樣解釋的,我們不要將SQLite與Oracle或PostgreSQL去比較,而是應(yīng)該將它看做fopen和fwrite。 2. 在嵌入式或移動設(shè)備上的應(yīng)用: 還有一種簡單的場景也適用于SQLite,即統(tǒng)計(jì)數(shù)據(jù)的預(yù)計(jì)算。 可以充分利用SQLite提供SQL特征,完成簡單的數(shù)據(jù)統(tǒng)計(jì)分析的功能。 5. 產(chǎn)品Demo和測試:對于產(chǎn)品的功能性測試而言,SQLite也可以起到相同的作用。三、和RDBMS相比SQLite的一些劣勢:由于SQLite的數(shù)據(jù)管理機(jī)制更多的依賴于OS的文件系統(tǒng),因此在這種操作下其效率較低。 四、個性化特征:在使用的過程中,也無需創(chuàng)建用戶和劃分權(quán)限。 2. 沒有獨(dú)立的服務(wù)器:SQLite作為一種嵌入式數(shù)據(jù)庫,其運(yùn)行環(huán)境與主程序位于同一進(jìn)程空間,因此它們之間的通信完全是進(jìn)程內(nèi)通信,而相比于進(jìn)程間通信,其效率更高。 SQLite的數(shù)據(jù)庫被存放在文件系統(tǒng)的單一磁盤文件內(nèi),只要有權(quán)限便可隨意訪問和拷貝,這樣帶來的主要好處是便于攜帶和共享。 然而這只是該操作的一小部分,因?yàn)閿?shù)據(jù)導(dǎo)入往往需要更多的時間。 和大多數(shù)支持靜態(tài)類型的數(shù)據(jù)庫不同的是,SQLite中的數(shù)據(jù)類型被視為數(shù)值的一個屬性。 Sqlite環(huán)境配置1. 下載 SQLite3 源碼:4. 生成或下載 SQLite3 Shell 文件:關(guān)于這 SQLite3 的 Shell 文件呢,就是用來創(chuàng)建 SQLite3 數(shù)據(jù)庫啊,創(chuàng)建表啊之類的東西,說白了就是個 SQLite Admin 的控制臺界面,當(dāng)然咯,控制臺這個東西并不怎么好用,所以你可以考慮換個其他的帶 GUI 的工具來管理你的 SQLite3 數(shù)據(jù)庫。具體命令就看下面的截圖就好了:首先在命令行下定位到你的 也就是 Shell 程序所在的目錄:比如我的 所在目錄為:E:\Code\SQLite\sqliteshellwin32x863071000然后輸入命令 sqlite3 從而創(chuàng)建 SQLite 數(shù)據(jù)庫,然后輸入命令 create table testDB_ID(ID int, Number int) 來創(chuàng)建數(shù)據(jù)表 testDB_ID然后輸入命令 。,是因?yàn)閂C\Bin\下沒有“,”這四個文件,解決的方法:1 直接從Common7\IDE\下復(fù)制這四個文件到VC\Bin\下即可解決2 添加系統(tǒng)變量(Path),這樣:我的電腦屬性高級環(huán)境變量系統(tǒng)變量,在path中添加C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;,注意結(jié)尾最后用“;”隔開!。testtable (first_col integer)。這里需要說明的是,對于自定義數(shù)據(jù)表表名,如testtable,不能以sqlite_開頭,因?yàn)橐栽撉熬Y定義的表名都用于sqlite內(nèi)部。 sqlite0, second_col varchar)。3). 在指定數(shù)據(jù)庫創(chuàng)建表:ATTACH DATABASEAS 關(guān)于該規(guī)則還需要給出一些額外的說明,如果我們在創(chuàng)建數(shù)據(jù)表時沒有指定數(shù)據(jù)庫名,那么將會在當(dāng)前連接的main數(shù)據(jù)庫中創(chuàng)建該表,在一個連接中只能有一個main數(shù)據(jù)庫。創(chuàng)建兩個表,一個臨時表和普通表。sqlitetesttable (first_col integer)。.backupsqlite重新建立sqlite的連接,并將剛剛導(dǎo)出的數(shù)據(jù)庫作為主庫重新導(dǎo)入。sqlite 4). IF NOT EXISTS從句:然而如果在創(chuàng)建表時加上IF NOT EXISTS從句,那么本次創(chuàng)建操作將不會有任何影響,即不會有錯誤拋出,除非當(dāng)前的表名和某一索引名沖突。sqlite CREATE TABLEFROM sqlite 直接在字段的定義上指定主鍵。sqliteCREATE TABLE ... )。和其他關(guān)系型數(shù)據(jù)庫一樣,主鍵必須是唯一的。7). 唯一性約束:CREATE TABLEtesttable2 ( UNIQUE sqlite DELETE FROM testtable。sqlite SELECT count(*) FROM testtable。count(*) sqlite CHECK sqlite ... second_col integer,AND testtable 表testtable已經(jīng)被修改為testtable2。2). 新增字段:ALTER TABLE.schemaCREATE TABLE testtable (first_col integer, second_col integer)。表testtable的定義中已經(jīng)包含了新增字段。關(guān)于ALTER TABLE最后需要說明的是,在SQLite中該命令的執(zhí)行時間是不會受到當(dāng)前表行數(shù)的影響,也就是說,修改有一千萬行數(shù)據(jù)的表和修改只有一條數(shù)據(jù)的表所需的時間幾乎是相等的。在很多其他的關(guān)系型數(shù)據(jù)庫中是不可以這樣的,如果必須要刪除相關(guān)對象,只能在刪除表語句中加入WITH CASCADE從句。sqlite CREATE TABLE testtable (first_col integer)。sqlitetesttable。Error: no such table: testtableDROP TABLE IF EXISTS 從上面的示例中可以看出,如果刪除的表不存在,SQLite將會報(bào)錯并輸出錯誤信息。 AS tempview sqliteSELECT * FROM testtable WHERE first_col 100。Error: table testview already existsCREATE VIEW IF NOT EXISTS五、刪除視圖:testview。sqlite Sqlite的鎖機(jī)制mit命令提交所執(zhí)行的所有操作。查詢總是在事務(wù)內(nèi)執(zhí)行,事務(wù)又涉及到鎖,所以如果鎖控制不當(dāng),會產(chǎn)生很多問題。 SQLite采用粗粒度的鎖。 SQLite有5種不同的鎖狀態(tài):未鎖定(unlocked)、共享(shared)、保留(reserved)、待定(pending)和排它(exclusive)。默認(rèn)情況下,一切都從未鎖定(unlocked)開始。與此對應(yīng),白色的待定狀態(tài)表示連接獲取和釋放共享鎖的途徑。)(39。)(39。)()代碼的鎖路徑如下所示:UNLOCKEDPENDINGSHAREDUNLOCKED因此,它們各自經(jīng)歷完整的路徑。這樣的做法,你可能會發(fā)現(xiàn),可以在兩個select exec()調(diào)用之間插入修改數(shù)據(jù)庫的操作,因此,這樣做無法確保兩個命令返回相同的結(jié)果。如果它獲得保留鎖,則準(zhǔn)備好開始進(jìn)行數(shù)據(jù)修改。當(dāng)連接進(jìn)入保留狀態(tài)時,pager初始化回滾日志。比如說,對于update修改的每條記錄,頁面獲取與原始記錄相關(guān)的數(shù)據(jù)庫頁,并將它們復(fù)制到日志中。未修改頁是Btree讀取但并未改變的頁,它們是諸如select命令之類的結(jié)果。此外要注意,給定數(shù)據(jù)庫同一時間只能有一個保留或獨(dú)占連接但是多個讀操作可以和一個寫操作并存。掛起狀態(tài)實(shí)際上是損耗階段。獨(dú)占狀態(tài)中,主要工作是將修改的頁從頁面緩存刷新到數(shù)據(jù)庫文件。在pager開始寫入修改的頁前,首先要處理日志。比如此處說的情況,事務(wù)自動提交,然后pager清理日志,清除頁緩存,從獨(dú)占鎖回到未鎖定狀態(tài)。 至此,以讀事務(wù)和寫事務(wù)為兩大方面,對鎖的5種狀態(tài)之間的轉(zhuǎn)換以及所起到的作用,分別做了舉例和總結(jié)。3). 刪除測試表。conn)。 sqlite3_stmt* stmt = NULL。stmt,NULL) != SQLITE_OK) { if (stmt) sqlite3_finalize(stmt)。對于DDL和DML語句而言,sqlite3_step執(zhí)行正確的返回值 //只有SQLITE_DONE,對于SELECT查詢而言,如果有數(shù)據(jù)返回SQLITE_ROW,當(dāng)?shù)竭_(dá)結(jié)果集末尾時則返回 //SQLITE_DONE。 } //4. 釋放創(chuàng)建表語句對象的資源。 //5. 構(gòu)建插入數(shù)據(jù)的sqlite3_stmt對象。 const char* testString = this is a test.。 i insertCount。 sqlite3_close(conn)。 return。 const char* dropSQL = DROP TABLE TESTTABLE。 sqlite3_close(conn)。 sqlite3_close(conn)。事實(shí)上,批量插入并不是什么新的概念,在其它關(guān)系型數(shù)據(jù)庫的C接口API中都提供了一定的支持,只是接口的實(shí)現(xiàn)方式不同而已。 顯而易見,這樣的批量寫入方式在效率上勢必會遠(yuǎn)遠(yuǎn)優(yōu)于多迭代式的單次寫入操作。2). 基于變量綁定的方式準(zhǔn)備待插入的數(shù)據(jù),這樣可以節(jié)省大量的sqlite3_prepare_v2函數(shù)調(diào)用次數(shù),從而節(jié)省了多次將同一SQL語句編譯成SQLite內(nèi)部識別的字節(jié)碼所用的時間。 //1. 打開數(shù)據(jù)庫 int result = sqlite3_open(D:/,amp。 } const char* createTableSQL = CREATE TABLE TESTTABLE (int_col INT, float_col REAL, string_col TEXT)。 if (sqlite3_prepare_v2(conn,createTableSQL,len,amp。 } //3. 通過sqlite3_step命令執(zhí)行創(chuàng)建表的語句。 return。 //5. 顯式的開啟一個事物。stmt2,NULL) != SQLITE_OK) { if (stmt2) sqlite3_finalize(stmt2)。 sqlite3_close(conn)。 const char* insertSQL = INSERT INTO TESTTABLE VALUES(?,?,?)。 sqlite3_close(conn)。 //7. 基于已有的SQL語句,迭代的綁定不同的變量數(shù)據(jù) for (int i = 0。 sqlite3_bind_double(stmt3,2,i * )。 return。 } sqlite3_finalize(stmt3)。 if (sqlite3_prepare_v2(conn,mitSQL,strlen(mitSQL),amp。 } if (sqlite3_step(stmt4) != SQLITE_DONE) { sqlite3_finalize(stmt4)。 //9. 為了方便下一次測試運(yùn)行,我們這里需要刪除該函數(shù)創(chuàng)建的數(shù)據(jù)表,否則在下次運(yùn)行時將無法 //創(chuàng)建該表,因?yàn)樗呀?jīng)存在。stmt5,NULL) != SQLITE_OK) { if (stmt5) sqlite3_finalize(stmt5)。 } sqlite3_fina
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1