QT学习笔记(16) QT5的数据库操作

一、编译驱动

  参考博客:http://blog.csdn.net/xian0gang/article/details/49791351

  因为从QT5以来,它就自带数据库驱动了,所以我们不需要费事的编译也可以使用数据库。QT访问MySQL需要两个动态链接库文件,一个是QT自己的mysql驱动插件,另一个是MySQL提供的动态链接库,缺一不可。

  在程序里指定要访问的数据库是MySQL,QT会自动的加载MySQL驱动插件,其实实现依赖于MySQL的动态链接库访问MySQL。

(1)访问MySQL提供的动态链接库

  在这就不提怎么安装MySQL 了,在目录 lib 里可以找到 MySQL 的动态链接库 libmysql.dll 和 libmysqld.lib

  

  找到这两个文件,然后把它们复制到我们QT安装的目录下,如下:

  

(2)测试数据库连接

  在项目文件.pro中,加入sql模块,然后在用到所需的类是必须包含头文件。

  QT_HelloWorld18.pro

 1 #数据库操作,需要加载sql模块
 2 QT       += core gui sql
 3
 4 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 5
 6 TARGET = QT_HelloWorld18
 7 TEMPLATE = app
 8
 9
10 SOURCES += main.cpp11         widget.cpp
12
13 HEADERS  += widget.h
14
15 FORMS    += widget.ui

  widget.cpp

 1 #include "widget.h"
 2 #include "ui_widget.h"
 3 #include <QDebug>
 4 #include <QtSql/QSqlDatabase>
 5 #include <QtSql/QSqlError>
 6 #include <QMessageBox>
 7 #include <QString>
 8
 9 Widget::Widget(QWidget *parent) :
10     QWidget(parent),
11     ui(new Ui::Widget)
12 {
13     ui->setupUi(this);
14
15     //打印QT支持的数据库驱动
16     qDebug() << QSqlDatabase::drivers();
17
18     //添加MySql数据库
19     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
20     //连接数据库
21     db.setHostName(QString::fromLocal8Bit("127.0.0.1"));//数据库服务器IP
22     db.setUserName(QString::fromLocal8Bit("root"));//数据库用户名
23     db.setPassword(QString::fromLocal8Bit("ccs"));//密码
24     db.setDatabaseName(QString::fromLocal8Bit("db_qt_test"));//使用哪个数据库
25
26     if(db.open() == true)
27     {
28         QMessageBox::information(this,QString::fromLocal8Bit("正确"),
29                                  QString::fromLocal8Bit("连接数据库成功"));
30         return ;
31     }
32     else
33     {
34         QMessageBox::warning(this,QString::fromLocal8Bit("错误"),
35                              db.lastError().text());
36         return ;
37     }
38 }
39
40 Widget::~Widget()
41 {
42     delete ui;
43 }

  

时间: 2024-08-24 17:31:26

QT学习笔记(16) QT5的数据库操作的相关文章

php laravel框架学习笔记 (二) 数据库操作

原博客链接:http://www.cnblogs.com/bitch1319453/p/6810492.html mysql基本配置 你可用通过配置环境变量,使用cmd进入mysql,当然还有一种东西叫做mysql console 创建一个数据库   create database [数据库名]   [选项]; 展示已经创建的数据库 show datebases; 在登录后使用 use 语句指定数据库 use 数据库名; 展示表show tables;(需要先指定数据库) 展示表的内容desc

【Qt学习笔记】13.拖放技术:Drag & Drop

1.接受拖放 Drag & Drop 是一个界面操作,用于在两个窗口间传递数据. Drag Source: 拖放源窗口 Drag Target: 拖放目标窗口 拖放操作: 1.在源窗口:选中目标,按下鼠标,移动,拖至目标窗口(Drag) 2.在目标窗口:取消鼠标,到指定位置,松开鼠标(Drop) (按下ESC取消操作) MIME: MIME(Multipurpose Internet Mail Extensions)被传递的数据以MIME格式传送,它是多组type-data数据:(type0,

QT学习笔记—1

1.模态和非模态的区别:非模态可以同时操作两个窗口,模态的只能在顶层窗口关闭之后才能使用其他窗口 //同时显示出widget和dialog窗口,非模态     QDialog *dialog = new QDialog(this);     dialog->show(); //同时显示出widget和dialog窗口,模态     QDialog *dialog = new QDialog(this);     dialog->setModal(true);     dialog->sh

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

sqlite学习笔记3:附加数据库和分离数据库

在前面说了如果创建一个数据库,接下来我们需要操作数据库: 但是sqlite3命令一次只能操作一个数据库,如果当前路径下有多个数据库该怎么办呢?这就需要用到附加数据库. 一  关联数据库 附加数据库实际上就是告诉sqlite3,你写的SQL语句是操作的哪一个数据库.具体如何操作呢? 基本语法如下: ATTACH DATABASE 'DatabaseName' As 'Alias-Name'; *sqlite3中的语句都需要以分好结束 使用上面的命名,如果数据库存在,将会被关联到'Alias-Nam

学习笔记(十三)——数据库备份还原的知识点与注意事项

学习笔记(十三)——数据库备份还原的知识点与注意事项 一.备份还原基本概念 1.  完整备份:完整备份因为需要备份的数据量大,所以需要在空闲时间进行,并且定期进行. 2.  日志备份:日志备份的数据量小,备份时间为上一次备份到本次本分期间的数据,每天都可以进行备份,或者每小时都可以进行备份,据所需备份. 3.  增量备份(差异备份):只备份修改过的数据,与每小时进行的日志备份配合使用,效率更高. 二.备份设备 1.          在进行备份数据的保存时,需要输入的文件路径很长,并且每次都要输

[Spring Data MongoDB]学习笔记--建立数据库的连接

1. 有了上一篇的Mongo后,连接数据库我们还需要更多的信息,比如数据库名字,用户名和密码等. 我们可以继续来配置MongoDbFactory的实例. public interface MongoDbFactory { DB getDb() throws DataAccessException; DB getDb(String dbName) throws DataAccessException; } 然后我们可以继续用MongoDbFactory来创建MongoTemplate的实例. pu

Qt学习笔记-Widget布局管理

Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,finddialog.h,finddialog.cpp及main.cpp. //finddialog.h代码 #ifndef FINDDIALOG_H#define FINDDIALOG_H #include <QDialog> class QCheckBox;class QLabel;class QLineE

Android学习--------实现增删改查数据库操作以及实现类似微信好友对话管理操作

最近的一个实验用到东西挺多,特地总结一下. 要求功能: 1.第一个页面添加歌曲名和歌手,跳到第二个页面列表显示所有记录,使用sqlite数据库 2.对于第二个页面显示的信息可以进行删除和修改操作,并自动刷新 最后我做的效果: 长按列表项弹出单个管理的菜单,像微信好友对话管理一样. 删除时可以直接删除这一条并在列表中直接显示,更新时弹出对话框更新内容提交后在列表中重新显示. 做此例遇到的困难: 1.菜单获取上下文 2.获取对话框中的内容 3.对话框按钮添加监听事件-----注意包不要导错:impo

sqlite学习笔记2:创建数据库

在上一次笔记中最后生成了一个sqlite可执行文件,cd到sqlite所在的目录下面执行: sqlite3 MyDataBase.db 就会创建了一个名叫MyDataBase.db的数据库,在当前路径下面就会生成一个叫MyDataBase.db的文件 #切记不是先运行sqlite3,然后再上述命令,而是在终端直接输入上述命令,否则会报错:Error: near "sqlite3": syntax error 然后运行命令: .databases 可以查看刚刚创建的数据库,退出数据库命令