sqlite數據庫在linux下安裝,配置,移植,使用,QT調用

一,安裝編譯,移植

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可以儲存任何東西:文字、數字、大量文字,不用標識輸入類型,它會在自動轉換。這是它與其他數據庫的一個很大區別。

語法爲

  1. 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也是直接就可以使用






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