Qt mysql驱动编译过程以及驱动下载
Qt编译MySQL驱动
1.首先当然是要有VS2008+Qt的开发环境。
2.安装MySQL,最好是4以后的版本,安装MySQL时要勾住“C Include Files 和 Lib Files”选项,这样才能装上MySQL的头文件和链接库。
3.由于MySQL先天的路径问题(就是它的路径里面有空格),我们需要把它的include和lib目录复制出来,放在一个没有空格的目录下。
比如在C盘建立mysql文件夹,把include和lib放进去。
4.把lib/opt/libmysql.dll放到一个环境变量能认识的地方,否则会造成驱动加载时,找不到这个dll文件。
5.在环境变量PATH中加入C:/Program Files/Microsoft SDKs/Windows/v6.0A/Bin,否则有可能在编译过程中发生rc.exe错误。
剩下的就都是在命令行下执行了:
6. 执行 C:/Program Files/Microsoft Visual Studio 9.0/Common7/Tools/vsvars32.bat
这个批处理文件的作用是设置环境变量的批处理,由于该批处理仅设置本次命令行窗口中的环境变量,并未修改注册表,所以每次打开个新命令行窗口都要运行一次批处理才可获得其中包含的环境变量设置,所以执行完后,不要关闭该命令行窗口, 剩下的操作依然在这个窗口中进行。
7. cd C:/Qt/4.7.4/src/plugins/sqldrivers/mysql/
8. qmake -o “INCLUDEPATH+=c:/MySQL/include” “LIBS+=c:/MySQL/lib/opt/libmysql.lib” mysql.pro
这里面的路径就是第3步里面创建的目录
注意上面的opt目录,我在用5.5版本的MySQL的时候就没有这个目录,libmysql.lib就在lib地下,所以这种情况就不用加opt了。
9. nmake release debug
到这里,其实MySQL的驱动已经编译完了,但是可能编译出来的动态链接库没有自动拷贝到 C:/Qt/4.7.3/plugins/sqldrivers 中去,没关系,我们手动从
C:/Qt/4.7.3/src/plugins/sqldrivers/mysql/release 和 C:/Qt/4.7.3/src/plugins/sqldrivers/mysql/release/debug
里面把qsqlmysql4.dll、qsqlmysql4.lib、qsqlmysqld4.dll、qsqlmysqld4.lib拷到 c:/Qt/4.7.3/plugins/sqldrivers 里面就行了(非常重要)。
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
qt_mysql w;
QTextCodec::setCodecForTr(QTextCodec::codecForName(“gbk”)); //设置tr()编码。
QSqlQueryModel *model;
QTableView *table=new QTableView;
QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”);
db.setHostName(“10.3.2.84”); //数据库服务器
db.setDatabaseName(“petct”); //数据库名
db.setUserName(“admin”); //登录名
db.setPassword(“admin”); //密码
if(db.open())
{
QSqlQuery query;
query.exec(“update patient_basic_info set sex =’m ‘where patient_id = 3”);
query.exec(“DELETE FROM patient_basic_info where patient_id = 3”);
query.exec(“SELECT patient_id , patient_name,ID_card_no,sex FROM patient_basic_info”);//name为属性名;
query.next();
QString name = query.value(1).toString(); w.ui.patient_name_text->setText(name);
model=new QSqlQueryModel;
model->setQuery(query);
table->setModel(model);
}
else
{
// 数据库打开失败,显示数据库返回的失败信息
QMessageBox::critical(0,QObject::tr(“数据库打开失败“),db.lastError().text());
}
w.show();
QApplication::connect(&app, SIGNAL(lastWindowClose()), &app, SLOT(quit()));
return app.exec();
}
附件使用,
1、将libmysql.dll拷贝到C:/Qt/4.7.4/bin 这样Qt驱动可以调用mysql,打开数据库
2、将qsqlmysql4.dll、qsqlmysql4.lib、qsqlmysqld4.dll、qsqlmysqld4.lib拷贝到C:/Qt/4.7.4/plugins/sqldrivers 这就是Qt mysql的驱动