Qt连接MySql数据库

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

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

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

        之后需要下载OBDC连接Mysql

  ODBC官网下载

Qt连接MySql数据库_第1张图片
        

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

Qt连接MySql数据库_第2张图片

 Qt连接MySql数据库_第3张图片

 

 

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

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

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

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

        

 Qt连接MySql数据库_第4张图片

 Qt连接MySql数据库_第5张图片

 Qt连接MySql数据库_第6张图片

 Qt连接MySql数据库_第7张图片

Qt连接MySql数据库_第8张图片

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

        打开mysql的命令式 net start mysql;

        关闭mysql命令: net stop mysql;     

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

       MySql的基本使用

Qt连接MySql数据库_第9张图片

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

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

#include 
#include 
#include 

        

        然后就可以使用以下代码进行连接了,我是将间接的代码放在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:"<

 

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()<

你可能感兴趣的:(数据库,qt)