Qt连接MySql数据库

        前段时间在写一个Qt小程序的时候有用到数据库,Qt与数据库的连接真的搞得我很头疼,一开始一直使用驱动连接,不是提示 ”没有驱动程序“ 就是提示  “找不到SSL” 。在网上搜来搜去最后终于找到了解决方案,使用ODBC来进行连接,因为大多数的Qt和我一样都是32位的,而下载的Mysql是64位的,因此使用其他方法比较繁琐而且最终没能解决问题。

        首先应该安装Mysql,没有安装的可以按照下面这位老哥的进行安装,我就是看的他的

MySQL的详细安装教程 - 知乎 (zhihu.com)MySQL的详细安装教程 - 知乎 (zhihu.com)

        之后需要下载OBDC连接Mysql

  ODBC官网下载


        

         我们可以通过自己Qt的安装位置来进行查看自己Qt的位数,或者说打开Qt之后通过任务管理器来获取自己下载的Qt的位数,来进行安装相应位数的ODBC程序

 

 

 

        安装过程一路next就可以,安装好之后搜索ODBC打开DataSources32位(因为有的小伙伴可能也安装了64位的) ;

        之后点击添加,选择ODBC8.0驱动;

        紧接着的新建连接页面,绿色框框的随便填写就可以,红色框框的填写自己的Mysql 用户名称和登录密码,以及要使用的数据库的名称;

        完成之后点击粉色框框的test来测试是否能够链接到自己电脑的Mysql上,如果成功的话将会显示connection success。

        

 

 

 

 

        如果提示失败的话可能因为Mysql没有打开,右击左下脚windows按钮打开命令行

        打开mysql的命令式 net start mysql;

        关闭mysql命令: net stop mysql;     

           对于Mysql上的一些操作可以参考下面CSDN老哥的文章,非常详细:

       MySql的基本使用

        完成以上步骤后说明已经可以通过ODBC连接到本地的数据库了,然后进行Qt与ODBC的连接就可以了。

        首先应该在.pro文件中加入: 
        QT += sql
        并且在连接数据库的文件中包含以下库:
​​​​​​​

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

        

        然后就可以使用以下代码进行连接了,我是将间接的代码放在MainWindow中,然后将db声明为全局变量即可在其他文件中对于我的数据库进行访问了

void MainWindow::ConnectToMysql(){  
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    db.setDatabaseName("zz_singlecard");
    db.setUserName("root");
    bool getInput=false;
    QString passwd=QInputDialog::getText(this,"PassWord","Please Inputt Your PassWord",QLineEdit::Normal,"passwd",&getInput);
    db.setPassword(passwd);
    bool ok = db.open();
    if (ok){
        QMessageBox::information(this, "infor", "success");
    }
    else {
        QMessageBox::information(this, "infor", "failed");
        qDebug()<<"Error because:"<<db.lastError().text();
    }
}

 

Qt中数据库的增删改查相关操作:

bool File::insert(const QString &value){
    QSqlQuery result;
    QString query="insert into students values("+value+",'正常');";
    bool ok=result.exec(query);
    return ok;
}//插入新行

bool File::fileDestory(const QString &UID){
    QSqlQuery result;
    bool ok=result.exec("delete from students where id="+UID+";");
    return ok;
}//删除

bool File::alter(const QString &id,const QString &value){
    QSqlQuery result;
    QString query="update students set money="+value+" where(id="+id+");";
    qDebug()<<query;
    bool ok=result.exec(query);
    return ok;
}//修改

bool File::select(const QString &UID,QStringList &list){
    QString query="select * from students where(id="+UID+");";
    QSqlQuery result=db.exec(query);
    while(result.next()){
        list<<result.value("id").toString();
        list<<result.value("number").toString();
        list<<result.value("name").toString();
        list<<result.value("money").toString();
        list<<result.value("sex").toString();
        list<<result.value("age").toString();
        list<<result.value("status").toString();
    }
    return list.size();
}//查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值