版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于嵌入式linux的數(shù)據(jù)庫基于嵌入式linux的數(shù)據(jù)庫主要有SQLite,Firebird,BerkeleyDB,eXtremeDBSQLite關(guān)系型數(shù)據(jù)庫,體積小,支持ACID事務(wù)BerkeleyDB中并沒有數(shù)據(jù)庫服務(wù)器的概念,它的程序庫直接鏈接到應(yīng)用程序中eXtremeDB是內(nèi)存數(shù)據(jù)庫,運(yùn)行效率高桌面嵌入式數(shù)據(jù)庫選型基本要求:1、輕巧:運(yùn)行高效、依賴較少2、跨平臺性:能夠在Android、iOS、linux等諸多環(huán)境下運(yùn)行3、開源4、具備編程接口開發(fā)能力SQLite、MySQL、Berkeley
DBexportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure-host=arm-linuxmakeexportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure-host=arm-linuxmakearm-linux-gccsqlite.c-oarmsqltest-L/home/unsp/lcd/sqlite-autoconf-3120200/.libs-lsqlite3#include"sqlite3.h"cp/mnt/hgfs/share/sqlite.c././configure配置工程,生成makefile文件make執(zhí)行makefile文件中的編譯腳本,完成源碼工程的編譯SQLite基礎(chǔ)SQLite的源代碼是C,其源代碼完全開放。SQLite第一個Alpha版本誕生于2000年5月。他是一個輕量級的嵌入式數(shù)據(jù)庫。
SQLite有以下特性:
零配置一無需安裝和管理配置;
儲存在單一磁盤文件中的一個完整的數(shù)據(jù)庫;
數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由共享;
支持?jǐn)?shù)據(jù)庫大小至2TB;
足夠小,全部源碼大致3萬行c代碼,250KB;
比目前流行的大多數(shù)數(shù)據(jù)庫對數(shù)據(jù)的操作要快;/download.html創(chuàng)建SQLite數(shù)據(jù)庫手工創(chuàng)建使用sqlite3工具,通過手工輸入SQL命令行完成數(shù)據(jù)庫創(chuàng)建.用戶在Linux的命令行界面中輸入sqlite3可啟動sqlite3工具代碼創(chuàng)建在代碼中常動態(tài)創(chuàng)建數(shù)據(jù)庫在程序運(yùn)行過程中,當(dāng)需要進(jìn)行數(shù)據(jù)庫操作時,應(yīng)用程序會首先嘗試打開數(shù)據(jù)庫,此時如果數(shù)據(jù)庫并不存在,程序則會自動建立數(shù)據(jù)庫,然后再打開數(shù)據(jù)庫SQLite常用命令介紹在終端下運(yùn)行sqlite3<*.db>,出現(xiàn)如下提示符SQLiteversion3.7.2Enter“.help”forinstructionsEnterSQLstatementsterminatedwitha“;”sqlite><*.db>是要打開的數(shù)據(jù)庫文件。若該文件不存在,則自動創(chuàng)建。exportPATH=$PATH:/usr/local/arm/arm-2009q3/bin./configure--host=arm-linuxSQLite常用命令介紹顯示所有命令sqlite>.help退出sqlite3 sqlite>.quit顯示當(dāng)前打開的數(shù)據(jù)庫文件 sqlite>.database顯示數(shù)據(jù)庫中所有表名 sqlite>.tablesSQLite常用命令介紹查看表的結(jié)構(gòu) sqlite>.schema<table_name>/*******************************************/以下為SQL命令,每個命令以;結(jié)束創(chuàng)建新表 sqlite>createtable<table_name>(f1type1,f2type2,…);刪除表 sqlite>droptable<table_name>
SQLite常用命令介紹查詢表中所有記錄sqlite>select*from<table_name>;按指定條件查詢表中記錄 sqlite>select*from<table_name>where<expression>;向表中添加新記錄 sqlite>insertinto<table_name>values(value1,value2,…);按指定條件刪除表中記錄 sqlite>deletefrom<table_name>where<expression>SQLite常用命令介紹更新表中記錄sqlite>update<table_name>set<f1=value1>,<f2=value2>…where<expression>;在表中添加字段 sqlite>altertable<table>addcolumn<field><type>;SQLite編程接口intsqlite3_open(char*path,sqlite3**db);
功能:打開sqlite數(shù)據(jù)庫path:
數(shù)據(jù)庫文件路徑db:
指向sqlite句柄的指針
返回值:成功返回0,失敗返回錯誤碼(非零值)
SQLite編程接口intsqlite3_close(sqlite3*db);
功能:關(guān)閉sqlite數(shù)據(jù)庫
返回值:成功返回0,失敗返回錯誤碼constchar*sqlite3_errmg(sqlite3*db);
返回值:返回錯誤信息
SQLite編程接口#include<stdio.h>#include<stdlib.h>#include<sqlite3.h>intmain(intargc,char*argv[]){ sqlite3*db;if(sqlite3_open(“my.db”,&db)!=SQLITE_OK){printf(“error:%s\n”,sqlite3_errmsg(db));exit(-1);}SQLite編程接口 ……
數(shù)據(jù)庫操作……sqlite3_close(db);return0;}#gcc-otesttest.c-lsqlite3SQLite編程接口typedefint(*sqlite3_callback)(void*,int,char**,char**);intsqlite3_exec(sqlite3*db,constchar*sql,sqlite3_callbackcallback,void*,char**errmsg);
功能:執(zhí)行SQL操作db:數(shù)據(jù)庫句柄sql:SQL語句callback:回調(diào)函數(shù)errmsg:錯誤信息指針的地址
返回值:成功返回0,失敗返回錯誤碼
SQLite編程接口sqlite3*db;char*errmsg;
……if(sqlite3_exec(db,“deletefromtable1whereid=1”,NULL,NULL,&errmsg)!=SQLITE_OK){printf(“error:%s\n”,errmsg);exit(-1);}……SQLite編程接口typedefint(*sqlite3_callback)(void*para,intf_num,char**f_value,char**f_name);
功能:每找到一條記錄自動執(zhí)行一次回調(diào)函數(shù)para:傳遞給回調(diào)函數(shù)的參數(shù)f_num:記錄中包含的字段數(shù)目f_value:包含每個字段值的指針數(shù)組f_name:包含每個字段名稱的指針數(shù)組
返回值:成功返回0,失敗返回-1
SQLite編程接口例如:定義一個回調(diào)函數(shù),打印記錄中所有字段的名稱和值
intcallback(void*para,intf_num,char**f_value,char**f_name){inti;printf(“*****************************\n”);for(i=0;i<f_num;i++){printf(“%s:%s\n”,f_name[i],f_value[i]);}return0;}SQLite編程接口sqlite3*db;char*errmsg;
……if(sqlite3_exec(db,“select*fromtable”,callback,NULL,&errmsg)!=SQLITE_OK){printf(“error:%s\n”,errmsg);exit(-1);}……SQLite編程接口不使用回調(diào)函數(shù)執(zhí)行SQL語句intsqlite3_get_table(sqlite3*db,constchar*sql,char**resultp,int*nrow,int*ncolumn,char**errmsg);
功能:執(zhí)行SQL操作db:數(shù)據(jù)庫句柄sql:SQL語句resultp:用來指向sql執(zhí)行結(jié)果的指針nrow:滿足條件的記錄的數(shù)目ncolumn:每條記錄包含的字段數(shù)目errmsg:錯誤信息指針的地址
返回值:成功返回0,失敗返回錯誤碼
SQLite編程接口sqlite3*db;char*errmsg,**resultp;intnrow,ncolumn,i,j,index;
……if(sqlite3_exec(db,“select*fromtable”,&resultp,&nrow,&ncolumn,&errmsg)!=SQLITE_OK){
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 15434:2025 EN Information technology - Automatic identification and data capture techniques - Syntax for high-capacity ADC media
- 《單證管理流程》課件
- 《少兒青春期教育》課件
- 單位管理制度集粹選集人員管理
- 《電化學(xué)局部腐蝕》課件
- 單位管理制度合并匯編【員工管理篇】
- 單位管理制度分享合集職工管理篇
- 單位管理制度范例匯編員工管理篇
- 單位管理制度呈現(xiàn)匯編【人力資源管理篇】十篇
- 單位管理制度呈現(xiàn)大全員工管理篇十篇
- 管轄權(quán)異議仲裁申請書
- (完整版)中考英語作文必備好詞好句
- T-CERDS 3-2022 企業(yè)ESG評價體系
- 落實(shí)國家組織藥品集中采購使用檢測和應(yīng)急預(yù)案
- 報價經(jīng)理崗位職責(zé)
- 汝州某燃煤熱電廠施工組織設(shè)計
- 豬場配懷工作安排方案設(shè)計
- 《廣東省普通高中學(xué)生檔案》模板
- GB/T 2-2016緊固件外螺紋零件末端
- GB/T 12467.5-2009金屬材料熔焊質(zhì)量要求第5部分:滿足質(zhì)量要求應(yīng)依據(jù)的標(biāo)準(zhǔn)文件
- GB 17740-1999地震震級的規(guī)定
評論
0/150
提交評論