QT數(shù)據(jù)庫(kù)實(shí)例 QT Sqlite操作
QT數(shù)據(jù)庫(kù)實(shí)例 QT Sqlite操作是本文介紹的內(nèi)容,不多說(shuō),我們先 來(lái)看看內(nèi)容,首先到SQLite官方網(wǎng)站下載:
http://www.sqlite.org/download.html
得到sqlite3.exe。即可.就可以操作數(shù)據(jù)庫(kù),不用安裝,不會(huì)修改系統(tǒng)信息。
我們?cè)贒OS下運(yùn)行sqlite3.exe的目錄運(yùn)行sqlite3.exe test就可以創(chuàng)建一個(gè)名為test的數(shù)據(jù)庫(kù)。
下面我們就可以創(chuàng)建數(shù)據(jù)庫(kù)的表了如:
- create table student(id varchar(10),name varchar(20),age smallint);
注意sqlite命令是基于sql的,必須在命令后面加上“;”,否則sqlite會(huì)認(rèn)為一條語(yǔ)句還沒(méi)有輸入完成,總會(huì)提示用戶輸入。
- insert into student values('1001' , 'lovesizhao' ,26); //增加數(shù)據(jù)庫(kù)內(nèi)容
select * from student;//查看student數(shù)據(jù)庫(kù)表的所有內(nèi)容。這個(gè)時(shí)候會(huì)在sqlite3.exe目錄得到一個(gè)名為test的文件,就是剛剛生成的數(shù)據(jù)庫(kù)文件
當(dāng)然這是在DOS操作,我將DOS下操作得到的數(shù)據(jù)庫(kù)文件test放到Qt工程目錄,在QT控制臺(tái)程序中讀取操作,但是卻不能顯示中文,不知道為什么。后來(lái)改成直接都在QT程序中增加數(shù)據(jù)庫(kù)內(nèi)容,也出現(xiàn)中文亂碼,在網(wǎng)上找到答案:
將QT設(shè)置編碼的地方改為:QTextCodec::setCodecForTr(QTextCodec::codecForLocale()));設(shè)置為本地編碼,插入數(shù)據(jù)時(shí)對(duì)查詢語(yǔ)句進(jìn)行QObject::tr()
(首先應(yīng)該在.pro文件中增加一句:QT += sql)
如下源碼:
- #include <QtCore/QCoreApplication>
- #include <QtSql>
- #include <QTextCodec>
- int main(int argc, char *argv[]){
- QCoreApplication a(argc, argv);
- QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
- QSqlDatabase dbconn=QSqlDatabase::addDatabase("QSQLITE"); //添加數(shù)據(jù)庫(kù)驅(qū)動(dòng)
- dbconn.setDatabaseName("mytest.db"); //在工程目錄新建一個(gè)mytest.db的文件
- if(!dbconn.open()) {
- qDebug()<<"fdsfds";
- }
- QSqlQuery query;//以下執(zhí)行相關(guān)QSL語(yǔ)句
- query.exec("create table student(id varchar,name varchar)"); //新建student表,id設(shè)置為主鍵,還有一個(gè)name項(xiàng)
- query.exec(QObject::tr("insert into student values(1,'李剛')"));
- query.exec(QObject::tr("insert into student values(2,'蘋(píng)果')"));
- query.exec(QObject::tr("insert into student values(3,'葡萄')"));
- query.exec(QObject::tr("insert into student values(3,'李子')"));
- query.exec(QObject::tr("insert into student values(4,’橘子')"));
- query.exec(QObject::tr("insert into student values(5,'核桃')"));
- query.exec(QObject::tr("insert into student values(6,'芒果')"));
- //query.exec(QObject::tr("select id,name from student where id>=1"));
- query.exec("select id,name from student where id>=1");
- while(query.next())//query.next()指向查找到的第一條記錄,然后每次后移一條記錄 {
- int ele0=query.value(0).toInt();//query.value(0)是id的值,將其轉(zhuǎn)換為int型
- QString ele1=query.value(1).toString();
- qDebug()<<ele0<<ele1;//輸出兩個(gè)值
- }
- query.exec(QObject::tr("drop student"));
- return a.exec();
- }
小結(jié):關(guān)于QT數(shù)據(jù)庫(kù)實(shí)例 QT Sqlite操作的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!






















