本文介绍的是Qt数据库操作 连接SQLite和MySQL数据库实例,很详细的为友们解决问题,不多说,我们先来看内容。
Qt数据库操作 连接SQLite和MySQL数据库实例是本文要介绍的内容,本来对于数据库的操作,本人也是有点感冒,那么我们一起来看这篇文章。
下载SQLite数据库
首先到SQLite官方网站下载:
http://www.SQLite.org/download.html
得到sqlite3.exe。即可.就可以操作数据库了。
运行cmd到该指定的目录下,使用如下命令:如
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17>sqlite3.exe test
并有以下提示:Enter SQL statements terminated with a ";"
就可以创建一个名为test的数据库了.你可以使用.help命令查看各命令.
.databases 可以得到所有的数据库。
可以使用如下命令得到一张表,并插入数据。***.quit退出.
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> create table student(id varchar(10),name varchar(20),age smallint);
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> select * from student;
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> insert into student values('1001' , 'lovesizhao' ,26);
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> select * from student;1001|lovesizhao|26
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> drop table student;
F:\软件\学习软件\数据库\SQlite\sqlite-3_6_17> .quit
而drop table student; 可以删除该表格.其实大部操作都属于SQL的相同没什么改变.
也可以将该数据库备份至output.sql,也称为重定向
- sqlite3.exetest.db3>output.sql
***可以将数据库保存为test.db3即可。
下面讲解如何通过Qt来访问刚才建立的数据库:
- QSqlDatabasedbconn=QSqlDatabase::addDatabase("QSQLITE","testSQLite");
- dbconn.setDatabaseName("test.db3");//当前目录下的test.db3数据库文件
- //SQLite数据库文件可用SQLite的命令行工具(c:\sqlite3.exe数据库名)或用SQLiteGUI工具创建,SQLiteSpy
- if(!dbconn.open())
- {
- return;
- }
- QTableView*view;
- QSqlTableModel*model;
- view=newQTableView();
- model=newQSqlTableModel(this,dbconn);
- model->setTable("test");
- model->select();
- view->setModel(model);
- 也可以直接访问内存得到:如
- QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
- db.setDatabaseName(":memory:");
- if(!db.open()){
- QMessageBox::critical(0,qApp->tr("Cannotopendatabase"),
- qApp->tr("Unabletoestablishadatabaseconnection.\n"
- "ThisexampleneedsSQLitesupport.Pleaseread"
- "theQtSQLdriverdocumentationforinformationhow"
- "tobuildit.\n\n"
- "ClickCanceltoexit."),QMessageBox::Cancel);
- returnfalse;
- }
- QSqlQueryquery;
- query.exec("createtableperson(idintprimarykey,"
- "firstnamevarchar(20),lastnamevarchar(20))");
- query.exec("insertintopersonvalues(101,'Danny','Young')");
- query.exec("insertintopersonvalues(102,'Christine','Holand')");
- query.exec("createtableimages(locationidint,filevarchar(20))");
- query.exec("insertintoimagesvalues(0,'images/oslo.png')");
- query.exec("insertintoimagesvalues(1,'images/brisbane.png')");
以下的操作只是往数据库中添加数据的插入操作.如果想进一步学习,请查找相当资料。
在这里我还提拱和种可以访问MySQL的方法.
首先要在Qt安装好mysql的插件.
去网上下载:mingw-utils-0.3
然后将解包后在其bin目录下找到reimp.exe,拷贝到mingw的bin目录下。而且要将mingw的bin目录加到classpath下.
则可以在cmd下使用如下命令:
- t>reimp-dlibmysql.lib
- t>dlltool-k-dlibmysql.def-llibmysql.a
注意:t的目录是mysql安装目录下。我的目录为D:\MySQL\lib\opt(而且这些目录中间不能有空格,否则得不到libmysql.a
然后转到Qt的目录下(我的为D:\Qt\4.3.2\src\plugins\sqldrivers\mysql).
运行如下命令:
- qmake-oMakefile"INCLUDEPATH+=D:\MySQL\lib\include""LIBS+=D:\MySQL\lib\lib\opt\LIBMYSQL.a"mysql.pro
- mingw32-make
这样就在D:\Qt\4.3.2\plugins\sqldrivers目录下生成libqsqlmysql4.a和qsqlmysql4.dll了.
然后就是运行一个连接到mysql数据库,测试是否成功.
- QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL");//使用mysql数据库驱动
- db.setHostName("localhost");
- db.setDatabaseName("test");//我们之前建立的数据库
- db.setUserName("root");//我们创建的yunfan用户名
- db.setPassword("123");//yunfan用户的密码
- boolok=db.open();//尝试连接数据库
- if(ok){//这里用yunfan已经成功连上数据库
- QSqlQueryquery;//新建一个查询的实例
- if(query.exec("select*fromt_customer")){//尝试列出employee表的所有记录
- //本次查询成功
- intnumRows=0;//询问数据库驱动,是否驱动含有某种特性
- if(db.driver()->hasFeature(QSqlDriver::QuerySize)){
- numRows=query.size();//如果支持结果影响的行数,那么直接记录下来
- }else{
- query.last();//否则定位到结果***,qt文档说,这个方法非常慢
- numRows=query.at()+1;
- }
- QStringid,lname,fname,phone;
- QDateTimedob;
- display.append("===========================================");
- display.append(QString::fromLocal8Bit("account|password|cname|cbalance"));
- display.append("--------------------------------------");
- while(query.next()){//定位结果到下一条记录
- id=query.value(0).toString();
- //lname=QString::fromLocal8Bit(query.value(1).toByteArray());
- //fname=QString::fromLocal8Bit(query.value(2).toByteArray());
- //dob=query.value(3).toDateTime();
- //phone=QString::fromLocal8Bit(query.value(4).toByteArray());
- QStringresult=id;//+""+fname+lname+""+(dob.toString())+""+phone;
- display.append(result);
- }
- display.append("============================================");
- display.append(QString("totally%1rows").arg(numRows));
- }else{//如果查询失败,用下面的方法得到具体数据库返回的原因
- QSqlErrorerror=query.lastError();
- display.append("Frommysqldatabase:"+error.databaseText());
- }
- }else{//打开数据库失败,显示数据库返回的失败描述
- display.append("cannotopendatabase.");
- display.append("Reason:"+db.lastError().databaseText());
- }
这只是其中一部分核心代码.
小结:关于Qt数据库操作 连接SQLite和MySQL数据库实例的内容介绍完了,希望本文对你再学习过程中有所帮助!