qt mysql sqlite3_QT上使用Sqlite3

本文介绍了在QT中如何使用SQLite3数据库,包括下载SQLite3命令行工具创建数据库、在QT项目中添加QT+SQL支持、编写连接数据库的类以及进行数据的增删查改操作。同时,通过QTableView展示了数据的可视化展示。
摘要由CSDN通过智能技术生成

官网上的sqlite最新是sqlite3的版本,下载了Realese版本的源代码可以学习学习。

至于Sqlite,简单说一下它的特性,一个轻量级的十分厉害的数据库,可以和很多编译环境结合。

对于QT,QT自带有驱动程序,在包的plugins里面有个sqldrivers就是了。

使用Sqlite教程如下,可是学习了其它人优秀的文章总结而出:

1.下载sqlite3.exe。

这是个命令行使用工具,可以在官网找到.http://www.sqlite.org/download.html

2.利用这个EXE可以创建数据库。在DOS下创建的。

在dos下运行sqlite3.exe,然后用sql语句进行创建.

3.结合QT与Sqlite

记着再添加之前的在pro文件中添加QT +=sql

QT+=sql

3.1 首先先建立一个h文件,用来写一连接函数

0818b9ca8b590ca3270a3433284dd417.png

classLinkSql

{

public:

LinkSql(QString,QString);

boolconnectDB(QString);

voidinsert(QString,intid,QStringname,intage);

boolcreateTable(QString);

voidselect(QString);

voidselectUseModel1(QString);

voidshowTable(QString);

};

3.2在main函数里调用数据库

0818b9ca8b590ca3270a3433284dd417.png

QApplicationa(argc,argv);

QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

QStringDB_NAME="music.db";//数据库名

QStringTB_NAME="People";//表名

LinkSql*linksql=newLinkSql(DB_NAME,TB_NAME);

if(!linksql->connectDB(DB_NAME))

{

QMessageBox::information(0,QObject::tr("Error"),QObject::tr("连接出错"));//添加一个INFORMATION消息框

return0;

}

linksql->showTable(TB_NAME);

3.3如何知道是否成功使用了数据库

3.3.1使用QDebug:

先写几个成员函数接口,也可以直接在main函数里面全写了。

0818b9ca8b590ca3270a3433284dd417.png

#include"linksql.h"

#include

#include

#include

#include

#include

#include

#include

LinkSql::LinkSql(QStringDB_NAME,QStringTB_NAME)

{

connectDB(DB_NAME);

createTable(TB_NAME);

}

boolLinkSql::connectDB(QStringDB_NAME)

{

QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");//使用QSqlite驱动

db.setDatabaseName(DB_NAME);//DB名称,如果源文件没有这个DB,则会自动创建。

if(!db.open())//如果打开失败。

{

returnfalse;

}

else

returntrue;

}

boolLinkSql::createTable(QStringTB_NAME)

{

QSqlQueryquery;

QStringsql_create="CREATETABLEIFNOTEXISTS"+TB_NAME+"(idINTEGERPRIMARYKEYAUTOINCREMENT,"

"nameVARCHAR(20)NOTNULL,"

"ageINTEGERNULL)";

boolflag=query.exec(sql_create);//标记是否成功创建表

if(flag)

{

qDebug()<

returntrue;

}

else

{

qDebug()<

returnfalse;

}

}

voidLinkSql::insert(QStringTB_NAME,intid,QStringname,intage)

{

QSqlTableModelmodel;

model.setTable(TB_NAME);

model.select();

introw=0;

model.insertRows(row,1);//QModelParentIndex

model.setData(model.index(row,0),id);

model.setData(model.index(row,1),name);

model.setData(model.index(row,2),age);

model.submitAll();//输入此语句才能确保更新到数据库中

}

voidLinkSql::select(QStringTB_NAME)

{

QSqlQueryquery;

query.exec("SELECTid,name,ageFROM"+TB_NAME);

while(query.next())

{

qDebug()<

}

}

voidLinkSql::selectUseModel1(QStringTB_NAME)

{

//QSqlQueryquery;

QSqlQueryModelmodel;

model.setQuery("SELECT*FROM"+TB_NAME);//提取所有的数据

//for(inti=0;i

//{

//intage=model.record(i).value("age").toInt();

//QStringname=model.record(i).value("name").toString();

//qDebug()<

//}

intageIndex=model.record().indexOf("age");

intnameIndex=model.record().indexOf("name");

for(inti=0;i

{

QSqlRecordrecord=model.record(i);

intage=record.value(ageIndex).toInt();

QStringname=record.value(nameIndex).toString();

qDebug()<

}

}

可知成功的创建了数据库。

如果下次编译不通过,出现错误“cannot open debug/XXX.exe"  请关掉正在运行的xxx.exe,因为使用qdebug是不会停止这个EXE运行的进程的。

3.3.2利用自定义UI界面输出,这里使用tableview;

需要借助,QT提供的三种访问数据库的高层类,QSqlQueryModel,QSqlTableModel,QSqlRelationalTableModel,可将数据源将数据库内的数据在QLIstView,或者是QTableView等基于视图模式的QT类表示出来。

3.3.2.1 QsqlQuertModel类,提供只读数据模型

0818b9ca8b590ca3270a3433284dd417.png

voidLinkSql::showTable(QStringTB_NAME)

{

QTableView*view=newQTableView;

view->setFixedWidth(500);

view->setFixedHeight(500);

QSqlQueryModel*model=newQSqlQueryModel;

model->setQuery("SELECT*FROM"+TB_NAME);//提取所有的数据

view->setModel(model);

//view->resizeColumnsToContents();//自动根据内容调整列宽

//view->resizeRowsToContents();

view->show();

}

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

参考博客:

Qt学习(3)Qt连接sqlite 数据库http://blog.163.com/wenwen10090215@126/blog/static/173322114201261784889/

QT中简单使用SQLITE数据库   http://blog.csdn.net/fjb2080/article/details/6459599

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值