Qt中使用mysql连接远程服务器

来源:互联网 发布:js map存值 编辑:程序博客网 时间:2024/06/04 18:51

db = QSqlDatabase::addDatabase("QMYSQL");    qDebug() << "MYSQL driver valid" << db.isValid();


首先查看有没有MYSQL的驱动。

一般Qt开始时都没有mysql这个驱动。显示 MYSQL driver is not valid。这里 我们只讨论Qt5.2.1版本的,如果是版本的话,可能会很麻烦。要去编译mysql驱动。所以我建议还不如直接卸载了,用最近的呢。

Qt5.2.1版本如何解决没有MYSQL驱动这个问题呢?很简单,如果你的电脑里面没有暗转mysql数据库,就去安装个。安装完mysql,可能要加环境变量。编辑Path,在后面加上C:\Program Files\MySQL\MySQL Server 5.7\bin 。
然后到安装目录,将c:\Program File\MySQL\MySQL Server 5.7\lib\中的libmysql.dll这个文件拷贝到D:\Qt\Qt5.2.1\5.2.1\mingw48_32\bin 目录下。Ps:以上的目录是我电脑的安装目录,具体要根据你自己的电脑。


mysql安装好后,自己就可以直接用dos测一下了:

mysql -u 用户名 -p密码 -h 地址 例:mysql -u root -p123 -h 127.0.0.1

这里可以介绍几个mysql简单的命令: show databases;//显示数据库  usemysql ;//选择那个数据库 show table ;//显示表 describe 表名;//显示某个表的字段说明


db.setHostName(sIp);    db.setPort(iPort);    db.setUserName(sUserNm);    db.setPassword(sPwd);    //连接sql服务器    bool r = db.open();if (r)      {          qDebug() << "SQL Server 2000 Connect OK!";            /* 计算当前表中id*/          QSqlQuery query1 = QSqlQuery(db);          query1.clear();          query1.prepare("select top 1 ID from SQL_2000 order by ID desc");          bool a = query1.exec();          int id;          if (a)          {              while(query1.next())              {                  id = query1.value(0).toInt();              }          }            /*插入数据*/          QSqlQuery query2 = QSqlQuery(db);          QString sq1 = QObject::tr("insert into SQL_2000(Id,Ip,Port,UserName,Password,DbType,DbName)"                                    "values (?, ?, ?, ?, ?, ?, ?)");          bool b = query2.prepare(sq1);          if(b)          {              qDebug() << "insert data success!";          }          query2.bindValue(0, id+1);          query2.bindValue(1, sIp);          query2.bindValue(2, iPort);          query2.bindValue(3, sUserNm);          query2.bindValue(4, sPwd);          query2.bindValue(5, sDbType);          query2.bindValue(6, sDbNm);            /*查询数据*/          QSqlQuery query3 = QSqlQuery(db);          query3.prepare("select * from SQL_2000 where Id=1");          bool c = query3.exec();          if (c)          {              qDebug() << "select data success!";              while(query3.next())              {                  qDebug() << query3.value(0);                  qDebug() << query3.value(1);                  qDebug() << query3.value(2).toInt();              }          }          else          {              qDebug() << query3.lastError().text().data();          }            /*删除数据*/          QSqlQuery query4 = QSqlQuery(db);          query4.prepare("delete from SQL_2000 where Id=1");          bool d = query4.exec();          if (d)          {              qDebug() << "delete data success!";          }          else          {              qDebug() << query3.lastError().text().data();          }      }      else      {          QMessageBox::information(this, tr("提示"), tr("Sql Server数据库连接失败!"), tr("确定"));          qDebug() <<"error_SqlServer:\n" << db.lastError().text();      }        db.close(); 


0 0