SQLite數(shù)據(jù)庫(kù)移植詳解
在掛有小型系統(tǒng)的嵌入式產(chǎn)品中,移植SQLite數(shù)據(jù)庫(kù)就是一項(xiàng)必須的工作。以下是針對(duì)arm-linux-gcc的arm產(chǎn)品來(lái)移植SQLite數(shù)據(jù)庫(kù)的步驟詳解,在移植之前,請(qǐng)先確保arm-linux-gcc編譯是安裝正常的,這點(diǎn)非常重要。
SQLite,是一款輕型的數(shù)據(jù)庫(kù),是遵守ACID的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它包含在一個(gè)相對(duì)小的C庫(kù)中。它是D.RichardHipp建立的公有領(lǐng)域項(xiàng)目。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。
Sqlite官網(wǎng)網(wǎng)址:https://www.sqlite.org/
1、將sqlite-autoconf-3090200.tar.gz安裝包放到一個(gè)路徑下面,并將tar -xf sqlite-autoconf-3090200.tar.gz解壓
2、建立sqlite的空文件夾
3、進(jìn)入剛解壓的文件夾sqlite-autoconf-3090200,并執(zhí)行配置命令 ./configure --host=arm-linux --prefix=/opt/toolschain/sqlite
4、執(zhí)行make命令
5、執(zhí)行make install命令
6、完成之后,到剛才新建的sqlite數(shù)據(jù)庫(kù)看一下,是否生成一些文件夾
7、Bin文件夾
注意:Bin文件夾下有個(gè)sqlite3這個(gè)文件,當(dāng)?shù)腶rm開發(fā)板要用sqlite數(shù)據(jù)庫(kù)時(shí),將這個(gè)文件復(fù)制到開發(fā)板下面即可,一般的路徑是是在文件系統(tǒng)下的/user/bin下面,也有其他的路徑,視情況而定。
8、Lib文件夾
注意:這些都是一些庫(kù)連接文件了,將這些文件全部復(fù)制到開發(fā)板的文件系統(tǒng)的/user/lib下面,也有其他路徑,視情況而定。
9、Include文件夾
這個(gè)文件夾下面的sqlite3.h就是我們應(yīng)用程序要使用的文件了,在要操作數(shù)據(jù)庫(kù)時(shí),將這個(gè)文件包含進(jìn)來(lái)即可,比如我的項(xiàng)目下面就包含了這個(gè)文件了。
10、由于我的項(xiàng)目使用的靜態(tài)庫(kù)連接,看makefile
所以需要將生成文件lib下面的libsqlite3.a復(fù)制到我的項(xiàng)目文件夾下面,如果使用動(dòng)態(tài)的就不需要了,注意一下
11、編譯項(xiàng)目
當(dāng)編譯項(xiàng)目時(shí)出現(xiàn)了一序列的錯(cuò)誤,都找不到該函數(shù)
這個(gè)問(wèn)題的解決方法是:在編譯時(shí)加上-ldl即可
12、Sqlite制作成功,這個(gè)是arm-linux平臺(tái)的,其他平臺(tái)的移植類似,successfully!!!……
13、Sqlite常用基本命令
新建數(shù)據(jù)庫(kù)
- sqlite3 databasefilename
插入記錄
- insert into table_name values (field1, field2, field3...);
查詢
select * from table_name;查看table_name表中所有記錄;
select * from table_name where field1='xxxxx'; 查詢符合指定條件的記錄;
刪除
- delete from table_name where ...
刪除表
drop table_name; 刪除表;
drop index_name; 刪除索引;
修改
- update table_name set xxx=value[, xxx=value,...] where ...
輸出 HTML 表格:
- sqlite3 -html film.db "select * from film;"