Ejemplo de QT estableciendo conexión a la base de datos, agregando, eliminando, modificando y verificando

Las siguientes son principalmente operaciones en la base de datos mysql, otras operaciones de la base de datos son realmente similares:

 

1. Agregue QT + = sql al archivo .pro, como se muestra a continuación:



2. Agregue archivos de encabezado relacionados con SQL

#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>

3. Conéctese a la base de datos

    qDebug()<<QSqlDatabase::drivers();    //查询支持的sql对象,下面调用的数据库实例QMYSQL就是从这里的结果确定的

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //数据库对象

    //连接数据库
    db.setHostName("192.168.0.1");            //数据库服务器IP
    db.setPort(3306);                        //端口
    db.setUserName("test");                 //数据库用户名
    db.setPassword("123456");               //数据库密码
    db.setDatabaseName("test");              //使用哪个数据库

    if( !db.open() ){       //数据库打开失败
        QMessageBox::warning(this,"错误",db.lastError().text());
        return;
    }

4. Consulta de datos
Colocamos los datos encontrados en un widget de tabla, que parece intuitivo:

    QStringList headerText;
    headerText<<"权限"<<"姓名"<<"密码";
    ui->tableWidget->setColumnCount(headerText.count());

    for(int i = 0;i<headerText.count();i++)
    {
        ui->tableWidget->setHorizontalHeaderItem(i,new QTableWidgetItem(headerText.at(i)));
    }

    QSqlQuery query;    //查询语句
    query.exec("select * from user;");

    qint32 rowNo = 0;

    while(query.next())
    {
        QTableWidgetItem *item;
        QStandardItem *sItem;

        qDebug()<<query.value(0).toString()<<":"<<query.value(1).toString()<<":"<<query.value(2).toString()<<":"<<query.value(3).toString();
        ui->tableWidget->insertRow(rowNo);

        for(int i=0;i<3;i++)
        {
             item = new  QTableWidgetItem(query.value(i+1).toString(),i);
             ui->tableWidget->setItem(rowNo,i,item);
        }
        rowNo++;
    }

Puede ver los resultados de la consulta:




5. Nuevos datos
Simplemente llame al método de consulta de QSqlQuery Para errores de consulta, puede usar su función lastError para leer el motivo del error del comando.

    QSqlQuery query;

    QString sqls = QString("insert into user values(%1,%2,%3,%4);")
            .arg(11).arg(2).arg("'test1'").arg("'test1'");

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

6. Eliminar datos

    QSqlQuery query;

    //删除ID=11的用户
    QString sqls = QString("delete from user where id = %1").arg(11);

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

7. Modifica los datos

     QString sqls = QString("update user set username = %1 where id = %1;")
             .arg("'user1'").arg(10);

    qDebug()<<sqls;

    if(query.exec(sqls))
    {
        qDebug()<<"成功";
    }
    else
    {
        qDebug()<<"失败";
        qDebug()<<query.lastError();
    }

Otras operaciones, como las operaciones de tabla, son todas problemas de empalme y llenado de sql, por lo que no las describiré más.

8. Cuando Qt se conecta a MySQL, muestra "QSqlDatabase: controlador QMYSQL no cargado", que puede ser la falta del archivo de biblioteca libmysql.dll. Puede encontrar este archivo en el directorio de instalación de msyql y colocarlo en el directorio bin en el directorio del compilador del directorio de instalación de QT a continuación, como "C: \ Qt \ Qt5.9.0 \ 5.9 \ mingw53_32 \ bin"
Si esto aún no funciona, verifique si los dígitos del mysql instalado son los mismos que los de QT , si no, vaya a esta dirección:
https: //dev.mysql .com / downloads / connector / c /
Descargue mysql-connector-c, busque el archivo "libmysql.dll" en su directorio lib, copie este archivo a Qt's bin, reinicie Qt Creator y se ejecutará correctamente.
En resumen, asegúrese de que el número de bit de mysql correspondiente al archivo libmysql.dll en el entorno de ejecución del programa sea el mismo que el número de bit de QT.

Supongo que te gusta

Origin blog.csdn.net/zhangfls/article/details/114279217
Recomendado
Clasificación