一,安裝編譯,移植
1.首先下載sqlite源碼包,sqlite-autoconf-3080403.gz下載地址:http://www.sqlite.org/download.html
2.解壓
# tar zxvf sqlite-autoconf-3080403.gz
# cd sqlite-autoconf-3080403
3.新建兩個文件夾用於編譯不同版本
# mkdir sqlite-x86 sqlite-arm
4.先編譯電腦版
# cd sqlite-x86/
# ../configure --prefix=/usr/local
# make
# make install
# ldconfig
由於庫安裝的路徑可能不在系統的默認路徑上,而引起出現”SQLite header and source version mismatch“這個錯誤,所以用ldconfig命令來解決。
如果不成功可以採用以下方法
解決方法:將安裝目錄/usr/local/lib裏面的libsqlite3.so.0和libsqlite3.so.0.8.6複製到/usr/lib/i386-linux-gnu,替換原有文件。
檢驗是否安裝成功
# sqlite3 -version
出現版本號就是已經成功,如下
# sqlite3 -version
3.8.4.3 2014-04-03 16:53:12 a611fa96c4a848614efe899130359c9f6fb889c3
5.編譯ARM版
# cd ../sqlite-arm/
# ../configure CC=arm-linux-gcc-4.5.1 --host=arm-linux --prefix=/usr/local/arm/target
# make
# make install
經過上步所得到的文件已經可以放到ARM板上使用的了,但爲了節省ARM板的存儲空間,我們先對該文件瘦身,去掉沒用的調試信息
# arm-linux-strip /usr/local/arm/target/lib/libsqlite3.so.0.8.6
# arm-linux-strip /usr/local/arm/target/lib/libsqlite3.so
# arm-linux-strip /usr/local/arm/target/bin/sqlite3
把bin/sqlite3拷貝到ARM板上的根目錄/bin下,把/lib下的libsqlite3.so.0.8.6 libsqlite3.so libsqlite3.so.0 拷貝到ARM板根目錄/lib目錄下。
測試方法也是一樣
# sqlite3 -version
出現版本號就是已經成功了。
二,使用
PC和ARM方法一樣
1.創建數據庫,student.db
# sqlite3 student.db
已經存在則打開,還沒存在就會創建並打開
打開後出現
SQLite version 3.8.4.3 2014-04-03 16:53:12
Enter ".help" for usage hints.
使用.help查看幫助,.quit退出
SQL的指令格式
所有的SQL指令都是以分號(;)結尾的。如果遇到兩個減號(--)則代表註解,sqlite3會略過去。
2.建立表
sqlite> create table student(id,name,gender,age);
這裏在數據庫student.db裏創建了一個表,名爲student的表,包含元素,id,name,gender,age,sqlite可以儲存任何東西:文字、數字、大量文字,不用標識輸入類型,它會在自動轉換。這是它與其他數據庫的一個很大區別。
語法爲
- create table table_name(field1, field2, field3, ...);
table_name是資料表的名稱,fieldx則是字段的名字。
2.建立索引如果資料表有相當多的資料,我們便會建立索引來加快速度。
這裏例如以id爲索引
sqlite> create index stu_id on student(id);
這裏創建了一個stu_id的索引,它爲表student中的id作爲索引
這個指令的語法爲 create index index_name on table_name(field_to_be_indexed);
一旦建立了索引,sqlite3會在針對該字段作查詢時,自動使用該索引。這一切的操作都是在幕後自動發生的,無須使用者特別指令。
3.插入數據
sqlite> insert into student values(1,'li','man',23);
sqlite> insert into student values(2,'lt','woman',22);
如果是空,則填NULL;
4.查看數據
sqlite> select * from student;
1|li|man|23
2|lt|woman|22
*爲查看條件,查看student全部內容
---------------------------------------------------------
sqlite> select name from student;
li
lt
查看所有的name
--------------------------------------------------------
select * from film limit 10;
只輸出10個結果
--------------------------------------------------------
sqlite> select * from student where id=1;
1|li|man|23
查看id爲1的所有結果
-------------------------------------------------------
sqlite> select * from student order by id;
以id爲條件從小到大
-------------------------------------------------------
sqlite> select * from student where id<3;
列出所有id小於3所有內容
------------------------------------------------------
sqlite> select count(*) from student;
4
------------------------------------------------------
其他指令不詳細寫了,類似SQL指令
三,QT調用
在工程文件.pro中加入
LIBS += -lsqlite3
然後加入頭文件
#include <sqlite3.h>
然後在.cpp文件中編寫程序,
新建一個數據庫db
sqlite3 *db;
SQL指令
QString cmd="select * from student;";
sqlite儲存數據是以二維數組形式
定義用於裝得到的數據有幾行幾列
int h,l;
定義用於裝返回的數據
char** result;
打開一個數據庫到db;
sqlite3_open("student.db",&db);
數據庫調用函數
sqlite3_get_table(db,cmd.toAscii(),&result,&h,&l,NULL);
第一個參數爲要操作的數據庫,第二個爲操作指令,第三裝返回數據,第四個裝得到數據的行,第五爲列,第六爲裝錯誤信息
--------------------------------------------------------------------------------------------------------
然後釋放內存
sqlite3_free_table(result);
操作完了就關閉
sqlite3_close(db);
電腦上編寫的QT程序只要環境都搭建好了在ARM也是直接就可以使用