QT使用QSqlDatabase链接sqlite3

使用QSqlDatabase、QSqlQuery、QSqlRecord实现sqlite3的链接。
首先要在Pro文件中加载sql模块,如:QT += sql;
然后使用addDatabase来链接库文件,链接类型有如下:
QT使用QSqlDatabase链接sqlite3_第1张图片
首先使用创建数据QSqlDatabase对象后,使之成为QqlQuery的句柄。然后使用QSqlQuery的exec来执行数据库语言。
创建数据库

    static const char* DBName = "./test.db";
    QFileInfo file(DBName);
    if(file.exists() == false)
    {
        m_db = QSqlDatabase::addDatabase("QSQLITE");
        m_db.setDatabaseName(DBName); //设置数据库名

        if (!m_db.open())
        {
            qWarning("数据库不能打开");
        }

        QSqlQuery query(m_db);
        ///创建卡号数据库
        query.exec("CREATE TABLE tb_card(cardNum varchar(64) PRIMARY KEY, name varchar(64), job varchar(64))");
        query.clear();

    }
    else
    {
        if (!m_db.isOpen())
        {
            if (m_db.contains(DBName))
                m_db = QSqlDatabase::database(DBName);
            else
            {
                m_db = QSqlDatabase::addDatabase("QSQLITE",DBName);
            }
            m_db.setDatabaseName(DBName); //设置数据库名
        }
    }
    m_db.close();

插入:

    if (!m_db.open())
    {
        qWarning("数据库不能打开");
    }
    QSqlQuery query(m_db);
    QString sqlStr;
    ///打开事务
    sqlStr = "begin;";
    query.exec(sqlStr);

    ///插入
    QString cardNum = QString::number(rand());
    sqlStr = QString("insert into tb_card(cardNum,name,job) values('%1','yjd','神')").arg(cardNum);
    query.exec(sqlStr);

    ///提交事务
    sqlStr = "commit;";
    query.exec(sqlStr);

    m_db.close();

查看:

    if (!m_db.open())
    {
        qWarning()<<"数据库不能打开";
    }
    QSqlQuery query(m_db);
    QString sqlStr;
    sqlStr.append("select * from tb_card");
    bool isSuccess = query.exec(sqlStr);

    QString cardNum, name, job;
    while(query.next()) //query.next()指向查找到的第一条记录,然后每次后移一条记录
    {
        cardNum = query.value(0).toString();
        name = query.value(1).toString();
        job = query.value(2).toString();
        qWarning()<<cardNum<<name<<job<<query.at();
    }

    m_db.close();

获取字段名称:

    if (!m_db.open())
    {
        qWarning()<<"数据库不能打开";
    }
    QSqlQuery query(m_db);
    QString sqlStr;
    sqlStr.append("select * from tb_card");
    bool isSuccess = query.exec(sqlStr);

    QSqlRecord record = query.record();
    query.seek(0);
    for (int i = 0; i < record.count(); ++i) {
        qWarning()<<record.fieldName(i);
    }
    m_db.close();

等等,还可以根据其他指令来操作数据库,如更新,删除,排序。

你可能感兴趣的:(QT,c/c++,qt,sqlite,数据库)