开发者

可能是全网最详细的Qt连接MySQL数据库教程

开发者 https://www.devze.com 2023-04-16 10:23 出处:网络 作者: joey小天使
目录1.直接通过mysql的驱动加载数据库1)所需代码2)解决QMYSQL driphpver not loaded2.通过ODBC连接MySQL数据库1)官方解释:2)下载ODBC3)连接MySQL数据库4)q开发者_JAV培训t通过ODBC连接MySQL3.qt通过ODBC操作数据
目录
  • 1.直接通过mysql的驱动加载数据库
    • 1)所需代码
    • 2)解决QMYSQL driphpver not loaded
  • 2.通过ODBC连接MySQL数据库
    • 1)官方解释:
    • 2)下载ODBC
    • 3)连接MySQL数据库
    • 4)q开发者_JAV培训t通过ODBC连接MySQL
  • 3.qt通过ODBC操作数据库
    • 1)查询数据
    • 2)插入数据
    • 3)更新数据
  • 总结编程

    被Qt连接数据库折磨了三天之后终于连接成功了,记录一下希望对看到的人有所帮助。

    1.直接通过MySQL的驱动加载数据库

    1)所需代码

    QSqlDatabase db = QSqlDatabase::addDat编程客栈abase("QMYSQL");
        db.setHostName("127.0.0.1");
        db.setPort(3306);
        db.setDatabaseName("数据库名");
        db.setUserName("用户名");
        db.setPassword("密码");
        bool ok = db.open();
        if (ok){
            QMessageBox::information(this, "infor", "success");
        }
        else {
            QMessageBox::information(this, "infor", "open failed");
            qDebug()<<"error open database because"<<db.lastError().text();
        }

    当然要在.pro文件中添加一行引入

    QT += sql

    如果显示:

    可能是全网最详细的Qt连接MySQL数据库教程

    那么恭喜你太幸运了,你已经成功连接MySQL数据库了,快去使用吧。

    如果显示:

    可能是全网最详细的Qt连接MySQL数据库教程

    也不要灰心接着往下看我的电脑就一直显示失败

    可能是全网最详细的Qt连接MySQL数据库教程

    没有QMYSQL的驱动,这是怎么回事呢?

    2)解决QMYSQL driver not loaded

    Qt连接到mysql的过程:app->Qt的数据库插件->mysql动态库->mysql服务。

    Qt的数据库插件位于“C:\Qt(安装路径)(Qt版本)\版本号(库)\mingw49_32(编译器)\plugins(插件)\sqldrivers(数据库插件)” 下的qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用).

    mysql动态库位于“C:\Qt\MySQLServer5.5(mysql安装路径)\lib”下的&ldjavascriptquo;libmysql.dll“

    i:将mysql下的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下

    ii:查看自己的qt中有没有qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用)

    如果都有:

    运行一下代码:

    //输出可用数据库
        qDebug()<<"available drivers:";
        QStringList drivers = QSqlDatabase::drivers();
        foreach(QString driver, drivers)
            qDebug()<<driver;
    

    如果输出中含有MySQL,那么恭喜你说明你的qt有MySQL驱动了:

    可能是全网最详细的Qt连接MySQL数据库教程

    如果没有,不要灰心,因为我的就是一直没有MySQL驱动:

    可能是全网最详细的Qt连接MySQL数据库教程

    大家可以重新下载一些不同的版本尝试一下,我尝试了无数次后不得不放弃,就选择了另一条路,通过ODBC连接MySQL数据库。

    2.通过ODBC连接MySQL数据库

    1)官方解释:

    ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。

    简单的说就是我的qt中含有ODBC的驱动:

    可能是全网最详细的Qt连接MySQL数据库教程

    所以利用ODBC去使用MySQL的数据库.

    2)下载ODBC

    官网

    可能是全网最详细的Qt连接MySQL数据库教程

    选择和qt编译器相同的字节比如我的qt使用的是64字节的

    可能是全网最详细的Qt连接MySQL数据库教程

    下载的ODBC选择的也是64字节的,选择MSI类型的直接安装就可以

    可能是全网最详细的Qt连接MySQL数据库教程

    下载一直点击next即可:

    可能是全网最详细的Qt连接MySQL数据库教程

    查看点击小娜,搜索ODBC,

    可能是全网最详细的Qt连接MySQL数据库教程

    3)连接MySQL数据库

    i添加MySQL的DSN

    可能是全网最详细的Qt连接MySQL数据库教程

    红色的可以随便填,是自己对于ODBC驱动的描述,粉色的是MySQL的用户名和密码,数据库选择你在MySQL中创建的数据库名字即可.

    可能是全网最详细的Qt连接MySQL数据库教程

    点击test如果出现下图说明连接成功

    可能是全网最详细的Qt连接MySQL数据库教程

    4)qt通过ODBC连接MySQL

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        db.setHostName("127.0.0.1");
        db.setPort(3306);
        db.setDatabaseName("是你在ODBC中创建的Data source name");
        db.setUserName("用户名");
        db.setPassword("密码");
        bool ok = db.open();
        if (ok){
            QMessageBox::information(this, "infor", "success");
        }
        else {
            QMessageBox::information(this, "infor", "open failed");
            qDebug()<<"error open database because"<<db.lastError().text();
        }
    

    运行程序:

    可能是全网最详细的Qt连接MySQL数据库教程

    大功告成

    3.qt通过ODBC操作数据库

    1)查询数据

    代码:

    //查询数据库中所有表的名称
        QStringList tables = db.tables();
        foreach(QString table, tables)
            qDebug()<<table;
    
    //ODBC查询数据
        QSqlQuery result = db.exec(" select * from users");
        while(result.next()){
            qDebug()<<"user_id:"<<result.value("user_id").toInt();
            qDebug()<<"name:"<<result.value("name").toString();
            qDebug()<<"password:"<<result.value("password").toString();
            qDebug()<<"score:"<<result.value("score").toInt()<<endl;
        }
    

    2)插入数据

    //ODBC插入数据
        result.clear();
        bool result_successed = result.exec("insert into users(name,password,score) values ( 'joe2y','123456',0)");
    
        if(result_successed){
            qDebug()<<"插入成功!";
        }else {
            qDebug()<<"插入失败!";
    }
    

    3)更新数据

    //ODBC更新数据
        result.clear();
        bool result_successed2 = result.exec("update users set score=10 where user_id=2");
    
        if(result_successed2){
            qDebug()<<"更新成功!"<<endl;
        }else{
            qDebug()<<"更新失败!"<<endl;
        }
    

    总结

    php此这篇关于Qt连接MySQL数据库的文章就介绍到这了,更多相关Qt连接MySQL数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号