較全面的sqlite數據庫彙總博客

 http://iihero.iteye.com/category/151894?show_full=true

 

文章列表

在使用SQLite在Windows Mobile上的大容量BLOB讀寫時,遇到一個OOM的問題,讓我們都覺得不可思議:     executeStmt(db, stmt, "create table foo(id integer not null primary key, content blob null, content2 blob null)");         sqlite3_stmt* stmt2 = NULL;     executeStmt(db, stmt, "insert into foo(id) values(10)");     ...
解決方法有: 1。使用進程或線程間的同步機制以避免同時操作;如用信號量,互斥鎖等(pthread_mutex_lock,pthread_mutex_unlock),如果你的項目工程較大要求較高的話建議用此方法自行封裝函數處理同步 2。使用sqlite提供的兩個busy handler函數,但對於一個連接來說,只能有一個busy handle,兩個函數會相互影響,設置一個的同時會清除另一個,應根據需要來選擇。 int sqlite3_busy_handler(sqlite3 *, int (*)(void *, int), void *) 不註冊此函數時默認回調函數爲NULL,清除busy han ...
如若轉載,請加上本文鏈接,以示尊重個人勞動,謝謝。 PRAGMA語句是SQLITE數據的SQL擴展,是它獨有的特性,主要用於修改SQLITE庫或者內數據查詢的操作。它採用與SELECT、INSERT等語句一樣的形式來發出請求,但也有幾個重要的不同: 1. 特定的PRAGMA語句可能被移走,新的PRAGMA語句可能在新的版本中添加。因此,後向兼容無法保證。 2. 未知的PRAGMA命令不會有錯誤消息出現,它只是簡單的忽略。 3. 有些PRAGMA只在SQL的編譯階段起作用,而不是執行階段。 這意味着如果使用C語言,sqlite3_prepare(), sqlite3_step(), sqlite ...
如若轉載,請加上本文鏈接,以示尊重個人勞動,謝謝。本文嚴格整理自最新的:http://www.sqlite.org/faq.html, (3.7.8) (多說一句,看一個系統的發佈,經常首先要看的就是,readme, 新特性,然後就是FAQ列表, 即所謂的常見問題列表) 1. 如何創建一個自增字段(autoincrement)? 在sqlite中,創建一個integer primary key,即可讓它自增,太變態了。創建了該類型字段以後,即算你插入NULL值,NULL也會自動轉爲最後一次插入的值+1。最大可能的整數值爲9223372036854775807,越過此值後,將會隨機生成一個值。 ...
在沒有大量閱讀SQLite在線文檔並且不瞭解相關配置之前,幾分鐘的時間可以讓你快速瞭解SQLite. 1. 下載源代碼,你總能從http://www.sqlite.org/download.html 這裏下載到最新的SQLite發行版本對應的源碼。 2. 創建數據庫你可以從http://www.sqlite.org/download.html這裏下載到sqlite3.exe,也可以直接依據下文: http://iihero.iteye.com/blog/1175595,自己動手編譯出該可執行文件。進到cmd窗口,進到sqlite3所在目錄,執行sqlite3 <demo.db全路徑&g ...
關於SQLite的幫助,直接上http://www.sqlite.org/docs.html看即可。但是它不是單個文件形式的,唯一的好處就是更新比較及時。如果你想看單個chm文件的,可以從我這裏下載單個chm文件: http://download.csdn.net/detail/iihero/2890372 至於編譯SQLite,如果只是出於學習的目的,完全可以只在windows下編譯。我甚至還爲此寫了一個自動下載並編譯的腳本,參看: http://iihero.iteye.com/blog/1175595 腳本里邊的wget.exe, 7z.dll, 7z.exe。前者來源於http:/ ...
使用SQLite也有一段時日了,一直想整理出一份比較完整的SQLite指南,可惜時間總是不夠。就從這裏開始吧,能寫多少就寫多少。總特性: 1. SQLite支持事務,滿足(ACID)特性:atomic, consistent, isolated, durable。即使在系統crash掉或者掉電的情況下,一樣可以恢復。 2. 0配置,不需要安裝或者初始化管理即可使用。(不就是嵌入式應用嗎?:)) 3. 整個數據庫存儲在跨平臺的磁盤文件裏頭,何謂跨平臺,就是說這個文件放到任意平臺上,都可以用相同版本的SQLite打開(這個確實強大,目前,即算商用的大型DBMS,其數據文件也沒幾個是跨平臺的,越大越 ...
從http://dbeaver.jkiss.org/下載了一個DBeaver1.4版,該軟件完全免費,功能與DBVisualizer相比,稍差一些,但是簡單易用,運行效率似乎要高一些。這裏以Sybase ASA, Sybase ASE, MySQL爲例,介紹一下它的簡單配置和使用。 1. 下載http://dbeaver.jkiss.org/ DBeaver1.4    我向來只使用解壓縮版:http://dbeaver.jkiss.org/files/dbeaver-1.4.0-win32.win32.x86.zip 2. 將其解到d:\tools, 這樣會有一個根目錄dbeaver, 裏邊有 ...
SQLite採用的是B+樹來存儲表中的索引和數據。 B樹的鍵及其值既存儲在內部節點上,也存儲在葉節點上,所有的葉節點具有相同的深度。 B+樹作了些微改變,鍵和數據會存儲到葉節點上,並且按照鍵值排好序。而內部節點只存儲鍵值。相當於有兩條查找路徑。 SQLite從根葉開始創建B+樹,一般從頁1開始。它以獨立的頁來存儲樹節點,每頁一個節點,這些頁要分內部頁還是葉子頁。對於每個節點,任何項(數據)及其鍵值組合成一個payload, 每頁都會預設一個payload值,當實際的payload超過此值時,超出的字節就會填充到溢出頁,多餘的payload會依次存儲到溢出頁形成的鏈表裏。內部頁和葉子頁都可以有溢出 ...
好久沒有光顧sqlite了,沒想到已經到了3.7.8了。以前手動下載,並且建工程,編譯,挺浪費時間的。乾脆用wget, 7z, 結合批處理,整理成一個可以下載並編譯成dll和exe的腳本。運行腳本之前,請先將vs2008的vcvar運行一下,得到vc的編譯環境。內容如下: @echo off set version=%1 set os_cpu=win32-x86 rem rem from sqlite3.7.4, rem sqlite3-product-version.zip rem sqlite3-product-version.tar.gz rem sqlite3-p ...
sqlite> create table t(id integer primary key autoincrement, col2 varchar(32)); sqlite> insert into t values((select (max(rowid) % 8192 + 1) from t), 'fdasfaf'); sqlite> select * from t; 1|fdasfaf sqlite> replace into t values((select (max(rowid) % 10 + 1) from t), 'k9'); sqlite> ...
如若轉載,請務必註明出處。iihero 2008.9.26於CSDN   本來想寫寫MS SQL Server的發展歷史。但想想,基本上在談Sybase ASE的時候,也把它都談到了。MS SQL Server發展到現在,確實是非常的成功。   它的傳播面很廣,總結起來,有幾點:   1. 似乎盜版傳播很容易,一個序列號破解,就可以無限期使用。對於Sybase ASE,簡直是不可能的事。它的license策略極爲嚴格,因而安全度也極高。   2. 用起來,GUI的方式被微軟引導了很多個,想不習慣也難。你用長了微軟的那一套界面,再去用用Oracle的,Sybase的,或者IBM ...
如若轉載,請尊重個人勞動,務必註明出處。 iihero 2008.9.26於CSDN   本來,應該把Teradata放到第4篇的,因爲它的市場份額快與Sybase ASE差不多了。也算是數據庫大廠商了。   1979年7月Teradata成立於Calif的Brentwood的一個車庫裏。在美國,那些IT名企,好多都始於車庫,MS,蘋果,google,Yahoo好像都是:-),這個名字的本意就是想支持Tera bytes數據的存儲。雖然,現在TB級的數據庫也蠻多的,那時可沒有。也算是有雄心壯志了。   1980年,風投來了,開始一筆是給了150K$, 後來又來了一筆,2.5M$,這下 ...
第一次用Postgre,已經是好多年以前了,隱約記得是在linux下邊,build半天,然後手動配置庫文件之類。今天在整理資料的時候發現,Postgre出現瞭解壓縮直接使用的版本,上邊註明了for expert only. 呵呵,看來,不推薦生手使用。爲了試驗一把,索性從它的官網上直接下載了一份postgresql-8.3.3-1-binaries-no-installer.zip   1. 將其解壓到d:\pgsql8.3.3 2. 設置環境變量,我不想直接添加,而是寫到了一個batch文件裏,名爲pgenv.bat set PGHOME=d:\pgsql8.3.3set PA ...
1. 如何創建自增字段? 2. SQLite 支持哪些數據類型? 3. 爲什麼能向 SQLite 數據庫的整型字段中插入字符串? 4. 爲什麼 SQLite 認爲表達式 '0'=='00' 爲真? 5. 爲什麼 SQLite 不允許在同一張表裏使用 '0' 和 '0.0' 作爲兩個不同的行的主鍵? 6. 爲什麼不能在 Linux box 中讀取在 SparcStation 中創建的 SQLite 數據庫? 7. 多個應用程序或者同一個應用程序的多個例程能同時存取同一個數據庫文件嗎? 8. SQLite是線程安全的嗎? 9. 如何列出一個 SQLite 數據庫中的所有的表/索引? 10. SQLi ...
sqlite(版本3),以下簡稱sqlite3,目前功能已經非常強大。目前支持的字符集,包括UTF-8, UTF-16,UTF-16le,UTF-16be。可是在我們直接使用gbk編碼的時候,很可能就會遇到問題。因爲目前,很多人會使用c/c++接口來訪問sqlite3數據庫,當然,也有人使用python接口來訪問它。1. 使用python時,要想正確的取到c++接口insert/update以後的數據,需要設定Connection的text_factory值爲str, 意思是直接使用原來存儲時的encoding形式。 con=sqlite3.connect(r"e:\t\test ...
作爲初學才,學起python,是挺快,但是也不免常常出些小錯。在訪問sqlite3的時候,我寫了下邊的測試代碼。文件test.py是utf-8編碼的,OK,結果沒問題。 #!/usr/bin/envpython#coding=utf-8importsqlite3#con=sqlite3.connect(r"sqlite.db")con=sqlite3.connect(r"e: estsqlite3.db")#con.text_factory=strcur=con.cursor()#cur.execute("insertintobasv ...
使用jdbc測了一下sqlite3的插入數據的效率,使用整體事務與不使用整體事務,差別非常明顯。 cpu: 1G, 內存:512MB使用整體事務:1000000條記錄,需要93秒鐘。使用逐個插入提交事務:1秒鐘只能處理20條記錄。啓動程序時把java堆最大空間設大一些,不然可能出現內存不夠的異常。java -Xmx256M TestConn測試後的結果顯示如下: 以下是測試代碼:import java.sql.*; public class TestConn {void test(){Connection conn = null;Statement stmt = null;ResultS ...

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章