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

时间:2022-09-21 15:04:51

1、首先查看有没有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 表名;//显示某个表的字段说明


<span style="font-family:SimSun;font-size:18px;">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(); </span>