您的位置:首页 > 编程语言 > Qt开发

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

2014-10-16 22:52 495 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: