本文介绍的是Qt数据库操作 连接SQLite和MySQL数据库实例,很详细的为友们解决问题,不多说,我们先来看内容。

Qt数据库操作 连接SQLiteMySQL数据库实例是本文要介绍的内容,本来对于数据库的操作,本人也是有点感冒,那么我们一起来看这篇文章。

下载SQLite数据库

Qt数据库操作 连接SQLite和MySQL数据库实例(qt怎么连接sqlite数据库)  Qt 数据库 SQLite MySQL 第1张

首先到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,也称为重定向

  1. sqlite3.exetest.db3>output.sql

***可以将数据库保存为test.db3即可。

下面讲解如何通过Qt来访问刚才建立的数据库:

  1. QSqlDatabasedbconn=QSqlDatabase::addDatabase("QSQLITE","testSQLite");
  2. dbconn.setDatabaseName("test.db3");//当前目录下的test.db3数据库文件
  3. //SQLite数据库文件可用SQLite的命令行工具(c:\sqlite3.exe数据库名)或用SQLiteGUI工具创建,SQLiteSpy
  4. if(!dbconn.open())
  5. {
  6. return;
  7. }
  8. QTableView*view;
  9. QSqlTableModel*model;
  10. view=newQTableView();
  11. model=newQSqlTableModel(this,dbconn);
  12. model->setTable("test");
  13. model->select();
  14. view->setModel(model);
  15. 也可以直接访问内存得到:如
  16. QSqlDatabasedb=QSqlDatabase::addDatabase("QSQLITE");
  17. db.setDatabaseName(":memory:");
  18. if(!db.open()){
  19. QMessageBox::critical(0,qApp->tr("Cannotopendatabase"),
  20. qApp->tr("Unabletoestablishadatabaseconnection.\n"
  21. "ThisexampleneedsSQLitesupport.Pleaseread"
  22. "theQtSQLdriverdocumentationforinformationhow"
  23. "tobuildit.\n\n"
  24. "ClickCanceltoexit."),QMessageBox::Cancel);
  25. returnfalse;
  26. }
  27. QSqlQueryquery;
  28. query.exec("createtableperson(idintprimarykey,"
  29. "firstnamevarchar(20),lastnamevarchar(20))");
  30. query.exec("insertintopersonvalues(101,'Danny','Young')");
  31. query.exec("insertintopersonvalues(102,'Christine','Holand')");
  32. query.exec("createtableimages(locationidint,filevarchar(20))");
  33. query.exec("insertintoimagesvalues(0,'images/oslo.png')");
  34. query.exec("insertintoimagesvalues(1,'images/brisbane.png')");

以下的操作只是往数据库中添加数据的插入操作.如果想进一步学习,请查找相当资料。

在这里我还提拱和种可以访问MySQL的方法.

首先要在Qt安装好mysql的插件.

去网上下载:mingw-utils-0.3

然后将解包后在其bin目录下找到reimp.exe,拷贝到mingw的bin目录下。而且要将mingw的bin目录加到classpath下.

则可以在cmd下使用如下命令:

  1. t>reimp-dlibmysql.lib
  2. 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).

运行如下命令:

  1. qmake-oMakefile"INCLUDEPATH+=D:\MySQL\lib\include""LIBS+=D:\MySQL\lib\lib\opt\LIBMYSQL.a"mysql.pro
  2. mingw32-make

这样就在D:\Qt\4.3.2\plugins\sqldrivers目录下生成libqsqlmysql4.a和qsqlmysql4.dll了.

然后就是运行一个连接到mysql数据库,测试是否成功.

  1. QSqlDatabasedb=QSqlDatabase::addDatabase("QMYSQL");//使用mysql数据库驱动
  2. db.setHostName("localhost");
  3. db.setDatabaseName("test");//我们之前建立的数据库
  4. db.setUserName("root");//我们创建的yunfan用户名
  5. db.setPassword("123");//yunfan用户的密码
  6. boolok=db.open();//尝试连接数据库
  7. if(ok){//这里用yunfan已经成功连上数据库
  8. QSqlQueryquery;//新建一个查询的实例
  9. if(query.exec("select*fromt_customer")){//尝试列出employee表的所有记录
  10. //本次查询成功
  11. intnumRows=0;//询问数据库驱动,是否驱动含有某种特性
  12. if(db.driver()->hasFeature(QSqlDriver::QuerySize)){
  13. numRows=query.size();//如果支持结果影响的行数,那么直接记录下来
  14. }else{
  15. query.last();//否则定位到结果***,qt文档说,这个方法非常慢
  16. numRows=query.at()+1;
  17. }
  18. QStringid,lname,fname,phone;
  19. QDateTimedob;
  20. display.append("===========================================");
  21. display.append(QString::fromLocal8Bit("account|password|cname|cbalance"));
  22. display.append("--------------------------------------");
  23. while(query.next()){//定位结果到下一条记录
  24. id=query.value(0).toString();
  25. //lname=QString::fromLocal8Bit(query.value(1).toByteArray());
  26. //fname=QString::fromLocal8Bit(query.value(2).toByteArray());
  27. //dob=query.value(3).toDateTime();
  28. //phone=QString::fromLocal8Bit(query.value(4).toByteArray());
  29. QStringresult=id;//+""+fname+lname+""+(dob.toString())+""+phone;
  30. display.append(result);
  31. }
  32. display.append("============================================");
  33. display.append(QString("totally%1rows").arg(numRows));
  34. }else{//如果查询失败,用下面的方法得到具体数据库返回的原因
  35. QSqlErrorerror=query.lastError();
  36. display.append("Frommysqldatabase:"+error.databaseText());
  37. }
  38. }else{//打开数据库失败,显示数据库返回的失败描述
  39. display.append("cannotopendatabase.");
  40. display.append("Reason:"+db.lastError().databaseText());
  41. }

这只是其中一部分核心代码.

小结:关于Qt数据库操作 连接SQLiteMySQL数据库实例的内容介绍完了,希望本文对你再学习过程中有所帮助!

转载请说明出处
知优网 » Qt数据库操作 连接SQLite和MySQL数据库实例(qt怎么连接sqlite数据库)

发表评论

您需要后才能发表评论