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();
        

这是查询

参考技术A 代码:mian.cpp
#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 sql  
QT       -= 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.h

QT5中如何使用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、应用程序输出如下:

QT5中如何使用SQLite_sql

4、创建的 MyDataBase.db 在build的这个文件夹下:

D:\\QT\\project\\build-sl-Desktop_Qt_5_10_1_MinGW_32bit-Debu

本文地址:​​https://www.linuxprobe.com/qt5-sqlite-method.html​

以上是关于qt如何调用sqlite数据库的主要内容,如果未能解决你的问题,请参考以下文章

QT5中如何使用SQLite

Qt/QTableView/SQLite如何连接?

43.QT-访问远程SQLite数据库

如何使用 Qt 在 Android 中读取现有的 SQLite 数据库?

Qt 如何连接到 android OS 中现有的 SQLite 文件?

如何将字符串值从 .csv 插入 SQLite 数据库? Qt C++