好文档 - 专业文书写作范文服务资料分享网站

QT操作数据库 学习基础

天下 分享 时间: 加入收藏 我要投稿 点赞

QT操作数据库 学习基础

QT操作数据库 学习基础是本文要介绍的内容,对于数据库相信友们有所接触,那么先来看本文。 一. 数据库操作 1.MySql驱动编译

在windows系统中,我们在mingw,MySql5和Qt4的环境中编译MySql驱动主要有以下几个步骤: (1)下载

http://www.qtcn.org/download/mingw-utils-0.3.tar.gz ; (2)将mingw-utils-0.3.tar.gz解压缩,将bin目录下的reimp 工具复制到 mingw目录下的bin 里,如果Dev-C++就复制到C:\Dev-Cpp\bin目录下

(3)将MySql安装目录下的include和lib目录拷贝到没有空格的路径下,比如C: \mysql下;

(4)打开Qt Command Prompt,分别执行以下命令: cd c:\mysql\lib\opt reimp -d libmysql.lib dlltool -k -d libmysql.def -l libmysql.a

这样在c:\mysql\lib\opt目录下就会生成一个libmysql.a文件;

(5)接下来执行以下命令: cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile

\\MYSQL\INCLUDE\\MYSQL\LIB\OPT\LIBMYSQL.a\ 找到%QTDIR%\src\plugins\sqldrivers\mysql\下的Makefile.release 和 Makefile.debug文件,去掉-llibmysql项再make编译,这下便会在%QTDIR%\plugins\sqldrivers目录下 面生成libqsqlmysql.a, qsqlmysql.dll这两个文件,然后在程式的.pro文件中添加QT+=sql并在程式开头包含#include 就能操作数据库了。

2.完全解决数据库存储中文和Qt程式显示数据库中文及中文字符串的问题

(1)数据库和表及表里的字符相关字段(varchar, char, text等)都要使用gbk_chinese_ci这种方式,不这样做也能,但这样做,会省非常多麻烦。

(2)重新编译Qt的MySQL驱动,需要修改src / sql / drivers / mysql / qsql_mysql.cpp文件。要修改的部分如下:第一百零八行的codec函数 static QTextCodec* codec(MYSQL* mysql) { return

QTextCodec::codecForName(\增加部分 #if MYSQL_VERSION_ID >= 32321 QTextCodec* heuristicCodec = QTextCodec :: codecForName ( mysql_character_set_name ( mysql ) ); if

(heuristicCodec) return heuristicCodec; #endif

return QTextCodec::codecForLocale(); }

(3)然后,重新编译qt的mysql驱动在Qt程式main函数中app后面开头处加入下面三句,加上这三个是省得不必要的麻烦

QTextCodec::setCodecForLocale(QTextCodec::codecForName(\

QTextCodec::setCodecForCStrings(QTextCodec::codecForName(\

QTextCodec::setCodecForTr(QTextCodec::codecForName(\

(4)在Qt数据库连接后,运行\\ db =

QSqlDatabase::addDatabase(\ db.setHostName(\

db.setDatabaseName(\ db.setUserName(\

db.setPassword(\ db.open(); db.exec(\

经过以上四步,就能在Qt程式中直接使用中文字符串,而且能直接使用中文字符串出入于程式和数据库之间 3.连接MySql数据库QSqlDatabase db = QSqlDatabase::addDatabase(\

db.setHostName(\

db.setDatabaseName(\ db.setUserName(\ db.setPassword(\ bool ok = db.open(); 链接QSLite数据库:QSqlDatabase db = QSqlDatabase::addDatabase(\

4.SELECT操作QSqlQuery query; int numRows; query.exec(\ASC\ while (query.next()) { QString name = query.value(0).toString();//query.value()的参数只能是index int salary = query.value(1).toInt(); label = setText(QString::number(salary)+name);//测试查询数据的行数 if

(db.driver()->hasFeature(QSqlDriver::QuerySize)) { numRows = query.size(); } else { // this can be very slow query.last(); numRows = query.at() + 1; } } 5.INSERT操作

(1)直接插入(一条记录)QSqlQuery query; query.exec(\VALUES (1001, ’Thad Beaumont’, 65000)\ (2)通过“:字段”操作QSqlQuery query;

query.prepare(\VALUES (:id, :name, :salary)\ query.bindValue(\1001); query.bindValue(\ query.bindValue(\ query.exec(); (3)通过“?”操作QSqlQuery query;

query.prepare(\VALUES (?, ?, ?)\ query.addBindValue(1001); query.addBindValue(\ query.addBindValue(65000); query.exec(); 6.UPDATE操作QSqlQuery query;

query.exec(\WHERE id = 1003\

7.DELETE操作QSqlQuery query;

query.exec(\1007\

8.transaction()操作

有时为了执行一系列复杂的操作,使用

QSqlDatabase::transaction()能加快速度//database为QSqlDatabase对象

if(database.driver()->hasFeature(QSqlDriver::Transactions)) //测试数据库是否支持Transactions,

{ database.transaction(); query.exec(\

QT操作数据库 学习基础

QT操作数据库学习基础QT操作数据库学习基础是本文要介绍的内容,对于数据库相信友们有所接触,那么先来看本文。一.数据库操作1.MySql驱动编译在windows系统中,我们在mingw,MySql5和Qt4的环境中编译MySql驱动主要有以下几个步骤:(1)下载http://www.qtcn.org/down
推荐度:
点击下载文档文档为doc格式
0vuht9d3ii4qfr01784a35m4y31ezc01579
领取福利

微信扫码领取福利

微信扫码分享