db = QSqlDatabase::addDatabase("QSQLITE", "first"); 
//打开数据库一  指定绝对路径  这个是其他文件生成的数据库
db.setDatabaseName("D:/qt_demo/build-sqlite_demo-Desktop_Qt_5_8_0_MinGW_32bit-Debug/student.db");
db2 = QSqlDatabase::addDatabase("QSQLITE", "second");
//打开数据库一  指定绝对路径    创建的数据库
db2.setDatabaseName("D:/qt_demo/staff.db");    
if (!db2.open())       
     qDebug() << "db2 Error";
QSqlQuery query2(db2);// 关联数据表2
//定义一条创建表的sql语句, 表明:stuff  表中的字段: id name age 
   QString sqlCreate = QString("create table staff(id integer primary key autoincrement,name varchar(20), age int););

//这样就可以在同一个工程里面用两个数据库,引用其他文件的数据库也可以。

 直接上代码:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    db = QSqlDatabase::addDatabase("QSQLITE", "first");
    //打开数据库一  指定绝对路径
    db.setDatabaseName("D:/qt_demo/build-sqlite_demo-Desktop_Qt_5_8_0_MinGW_32bit-Debug/student.db");
    if(!db.open())
        qDebug() << "db Error";

    db2 = QSqlDatabase::addDatabase("QSQLITE", "second");
    //打开数据库一  指定绝对路径
    db2.setDatabaseName("D:/qt_demo/staff.db");
    if (!db2.open())
        qDebug() << "db2 Error";
    QSqlQuery query2(db2);// 关联数据表2
    //定义一条创建表的sql语句, 表明:stuff  表中的字段: id name age
    QString sqlCreate = QString("create table staff(id integer primary key autoincrement,"
                                "name varchar(20),"
                                "age int);");

    //定义一条创建表的sql语句
    if(!query2.exec(sqlCreate))
        qDebug() << "create table error" << db2.lastError();

    QSqlQuery query1(db); // 关联数据表1
    QString sqlSelect = QString("select * from student;");
    if(!query1.exec(sqlSelect))
        qDebug() << "Error search data" << db.lastError();
    while(query1.next())
    {
        int id = query1.value("id").toInt();
        QString name = query1.value("name").toString();
        int classNum = query1.value("class").toInt();
        qDebug() << "id:" << id << "name" << name << "classNum" << classNum;
    }

}

Widget::~Widget()
{
    delete ui;
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐