第一步用:SQLyogC测试看看是否能连接上,如果都不能连接上谈何qt远程.
第二步:骤下载并安装mysqlODBCQ驱动,安装过程一直点击下一步骤就可以了/s/14wWlzFxfg6z46NMuVlJOHA?pwd=odbc
提取码:odbc
第三步:配置odbc
1.打开电脑控制版面输入odbc点击odbc64位在点击添加Unicode的MySQLodbc然后配置好确定就行了
第4步骤:Linux安装MySQL的odbc驱动在终端输入:
sudo apt search unixodbc
第五步测试:
#include "mainwindow.h"#include <QSqlDatabase>#include <QSqlQuery>#include<QDebug>#include <QApplication>#include <QSqlError>int main(int argc, char *argv[]){QApplication a(argc, argv);qDebug()<<QSqlDatabase::drivers();QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");//db.setHostName("127.0.0.1"); //此处测试了下,用127.0.0.1,和远程的192.168.137.131.都使用的是ODBC配置的数据源地址。所有此函数不起作用。db.setPort(3306);db.setDatabaseName("MySQL");db.setUserName("root");db.setPassword("123456");if (!db.open())qDebug()<<"can't open!"<<db.lastError();elseqDebug()<<"open!";QSqlQuery result = db.exec("select user from user;"); //注意,因为上面ODBC数据源配置时选择的是mysql这个自带系统库,所有可以访问user这个表。while (result.next())qDebug() << result.value("user").toString();return a.exec();}
如果成功:如图下
记得加
QT +=sql
增加删改查
增加
QSqlQuery quey;QString data1 = ui->lineEdit->text(), data2 = ui->lineEdit_3->text() ,data3=ui->lineEdit_2->text();quey.prepare("insert into data(name,class,score) values(?,?,?)");quey.addBindValue(data1);quey.addBindValue(data2);quey.addBindValue(data3);quey.exec(); //执行
删除
QSqlQuery quey;QString delaname=ui->lineEdit->text();quey.prepare(QString("DELETE FROM data WHERE name=?"));quey.addBindValue(delaname);quey.exec();
改
QSqlQuery quey;QString valueStr=ui->lineEdit_2->text();QString flag = ui->lineEdit->text();quey.prepare("update data set score = ? where name = ?");quey.addBindValue(valueStr);quey.addBindValue(flag);quey.exec(); //执行
查
QSqlQuery quey;int flag=0;quey.exec("select * from data");while(quey.next()){if(ui->lineEdit->text()==quey.value(1).toString()){QMessageBox *box=new QMessageBox(QMessageBox::Information,"查询成功",quey.value(1).toString(),QMessageBox::Ok | QMessageBox::Close);box->exec();flag=1;}}if(flag==0){QMessageBox *box_no=new QMessageBox(QMessageBox::Information,"查询结果","未查询到相关信息",QMessageBox::Ok | QMessageBox::Close);box_no->exec();}
遍历
QSqlQuery quey;quey.exec("select * from data");qint32 rowno=0;while(quey.next()){qDebug()<<quey.value(0).toString()<<quey.value(1).toString()<<quey.value(2).toString()<<quey.value(3).toString();ui->tableWidget->insertRow(rowno);for(int i=0;i<4;i++){ui->tableWidget->setItem(rowno,i,new QTableWidgetItem(quey.value(i+1).toString()));}rowno++;}