Qt下对于mysql的操作对于新手一开始是很难上手的,一不小心就出现程序直接奔溃,下面这篇文章,是我在写项目时,查的资料里面感觉用处最大的一个,在这边分享给大家。
对于mysql和Qt的连接,如果出现问题,一定要去注意两个软件的位数是否一样,Qt如果是32位的,那么你的mysql必须也是32位才行。
首先,要查询相关的驱动是否已经装好了,可以用以下的程序进行验证:
#include <QtCore/QCoreApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug()<<"Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() <<"/t" << driver;
return a.exec();
}
接着是连接数据库:
#include <QtGui/QApplication>
#include <QtGui>
#include <QtSql>
bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("123456");
bool ok = db.open();
if(!ok){
QMessageBox::critical(0, QObject::tr(" 连接数据库失败!!! "), db.lastError().text());
return false;
}else{
QMessageBox::information(0, QObject::tr("Tips"), QObject::tr(" 连接数据库成功!!! "));
return true;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec *codec= QTextCodec::codecForName("GB2312");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
if(!createConnection())
return 1;
return a.exec();
}
插入操作:
//ODBC 数据库表示方式
QSqlQuery query;
query.prepare( “insert into student (id, name) ”
“values (:id, :name) ”);
query.bindValue(0, 5);
query.bindValue(1, “sixth ”);
query.exec();
//Oracle 表示方式
query.prepare( “insert into student (id, name) ”