Qt sqlite数据库查询方法,QSqlQuery,QSqlRecord,QSqlFied的使用方法

#include <QApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlDriver>
#include <QSqlError>
#include <QStringList>
#include <QMessageBox>
#include <QVariant>
#include <QDir>
#include <QSqlRecord>
#include <QSqlField>

static bool createConnection()
{
    QSqlDatabase db1 = QSqlDatabase::addDatabase("QSQLITE","connection1");
    QString dataPath1 = QCoreApplication::applicationDirPath()+"/my1.db";
    db1.setDatabaseName(dataPath1);
    if(!db1.open())
    {
        QMessageBox::critical(0,"Cannot open database1","Unable to establish a database connection.",QMessageBox::Cancel);
        return false;
    }
    //这里指定连接
    QSqlQuery query1(db1);
    query1.exec("create table student(id int primary key, name vachar(20))");
    query1.exec("insert into student values(0,'LiMing')");
    query1.exec("insert into student values(1,'LiuTao')");
    query1.exec("insert into student values(2,'WangHong')");

    //创建另一个数据库
    QSqlDatabase db2 = QSqlDatabase::addDatabase("QSQLITE","connection2");
    QString dataPath2 = QCoreApplication::applicationDirPath()+"/my2.db";
    db2.setDatabaseName(dataPath2);
    if(!db2.open())
    {
        QMessageBox::critical(0,"Cannot open database2","Unable to establish a database connection.",QMessageBox::Cancel);
        return false;
    }
    //这里指定连接
    QSqlQuery query2(db2);
    query2.exec("create table student(id int primary key, name vachar(20))");
    query2.exec("insert into student values(10,'LiQiang')");
    query2.exec("insert into student values(11,'MaLiang')");
    query2.exec("insert into student values(12,'ZhangBin')");
    return true;
}

int main(int argc,char* argv[])
{
    QApplication a(argc,argv);
    if(!createConnection())
        return 1;

    QSqlDatabase db1 = QSqlDatabase::database("connection1");
    QSqlQuery query1(db1);
    query1.exec("select * from student");
    while(query1.next())
    {
        qDebug()<<query1.value(0).toInt()<<query1.value(1).toString();
    }
    //使用query2 查询连接2的表
    QSqlDatabase db2 = QSqlDatabase::database("connection2");
    QSqlQuery query2(db2);
    query2.exec("select * from student");
    while(query2.next())
    {
        qDebug()<<query2.value(0).toInt()<<query2.value(1).toString();
    }

    int numRows;
    //判断数据库驱动是否支持QuerySize属性,如果支持,可以使用size函数;如果不支持,那么就用其它方法来获取总行数
    if(db2.driver()->hasFeature(QSqlDriver::QuerySize))
    {
        qDebug()<<"has feature:query size";
        numRows = query2.size();
    }
    else
    {
        qDebug()<<"no feature:query size";
        query2.last();
        numRows = query2.at()+1;
    }
    qDebug()<<"row number:"<<numRows;

    query2.seek(1);
    qDebug()<<"current index:"<<query2.at();
    //获取当前行的记录
    QSqlRecord record = query2.record();
    //获取记录中"id"和“name”两个字段的值
    int id= record.value("id").toInt();
    QString name = record.value("name").toString();
    qDebug()<<"id:"<<id<<"name:"<<name;
    //获取索引为1的字段,即第二个字段
    QSqlField field = record.field(1);
    //输出字段名和字段值
    qDebug()<<"second field:"<<field.name()<<" field value:"<<field.value().toString();
    return a.exec();
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值