qt如何调用sqlite数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt如何调用sqlite数据库相关的知识,希望对你有一定的参考价值。
//自己设置连接名,不使用默认连接名if (SdbSqlite.contains("Conn2sqlite"))
SdbSqlite = QSqlDatabase::database("Conn2sqlite");
else
SdbSqlite = QSqlDatabase::addDatabase(
"QSQLITE","Conn2sqlite");
SdbSqlite.setDatabaseName("FiveChess.database"); //数据库名称
这是连接
if (SdbSqlite.open())int RltRowNumber = 0; //查询出来的结果列数
QString StrSql1 =
QString("select name,grade,integration,round,victory,defeat,rank"
" from member where account = '%0' and password = '%1';")
.arg(StrAcn,StrPsdOrNew);
QSqlQuery query1(SdbSqlite);
query1.exec(StrSql1);
while (query1.next())
if (SdbSqlite.driver()->hasFeature(QSqlDriver::QuerySize))
//速度快
RltRowNumber = query1.size();
else
//速度很慢
//实际执行的是这个
query1.last();
RltRowNumber = query1.at() + 1;
SdbSqlite.close();
这是查询
#include <QtCore/QCoreApplication>
#include <QtSql>
#include <QDebug>
int main(int argc, char *argv[])
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/tmp/my.db");
if (!db.open())
qDebug()<<"open database failed ---"<<db.lastError().text()<<"/n";
return -1;
QSqlQuery query;
bool ok = query.exec("CREATE TABLE IF NOT EXISTS people (id INTEGER PRIMARY KEY AUTOINCREMENT,"
"name VARCHAR(20) NOT NULL,"
"age INTEGER NULL)");
if (ok)
qDebug()<<"ceate table partition success/n";
else
qDebug()<<"ceate table partition failed/n";
for (int i = 0; i< 3; ++i)
query.prepare("INSERT INTO people (id, name, age) VALUES (:id, :name, :age)");
query.bindValue(":name", QString("smith_%1").arg(i+1));
query.bindValue(":age", 20+i*5);
query.exec();
// QSqlQuery query;
query.exec("SELECT id, name, age FROM people");
while (query.next())
qDebug()<<"people("<<query.value(0).toInt()<<") name:"<<query.value(1).toString()<<" age:"<<query.value(2).toInt();
return a.exec();
sql.pro:
QT += core sqlQT -= gui
TARGET = sql
CONFIG += console
CONFIG -= app_bundle
LIBS += -lsqlite3
TEMPLATE = app
SOURCES += main.cpp
编译运行,输出:
ceate table partition success
people( 1 ) name: "smith_1" age: 20
people( 2 ) name: "smith_2" age: 25
people( 3 ) name: "smith_3" age: 30
参考技术B 有接口啊。看sqlite.hQT5中如何使用SQLite
SQLite是一款开源轻量级的数据库软件,本文主要介绍了QT5中使用SQLite的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 |
SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。
Qt5以上版本可以直接使用SQLite。
1、修改.pro文件,添加SQL模块:
QT += sql
2、main.cpp代码如下:
#include "mainwindow.h"
#include
//添加头文件
#include
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//建立并打开数据库
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName("MyDataBase.db");
if (!database.open())
{
qDebug() << "Error: Failed to connect database." << database.lastError();
}
else
{
qDebug() << "Succeed to connect database." ;
}
//创建表格
QSqlQuery sql_query;
if(!sql_query.exec("create table student(id int primary key, name text, age int)"))
{
qDebug() << "Error: Fail to create table."<< sql_query.lastError();
}
else
{
qDebug() << "Table created!";
}
//插入数据
if(!sql_query.exec("INSERT INTO student VALUES(1, \\"Wang\\", 23)"))
{
qDebug() << sql_query.lastError();
}
else
{
qDebug() << "inserted Wang!";
}
if(!sql_query.exec("INSERT INTO student VALUES(2, \\"Li\\", 23)"))
{
qDebug() << sql_query.lastError();
}
else
{
qDebug() << "inserted Li!";
}
//修改数据
sql_query.exec("update student set name = \\"QT\\" where id = 1");
if(!sql_query.exec())
{
qDebug() << sql_query.lastError();
}
else
{
qDebug() << "updated!";
}
//查询数据
sql_query.exec("select * from student");
if(!sql_query.exec())
{
qDebug()<
3、应用程序输出如下:
4、创建的 MyDataBase.db 在build的这个文件夹下:
D:\\QT\\project\\build-sl-Desktop_Qt_5_10_1_MinGW_32bit-Debu
以上是关于qt如何调用sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Qt 在 Android 中读取现有的 SQLite 数据库?