新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt 作品展
>
二十一、Qt数据库(一)简介(原创)
发帖
回复
返回列表
新帖
8747
阅读
3
回复
二十一、Qt数据库(一)简介(原创)
[复制链接]
上一主题
下一主题
离线
yafei86
UID:86050
注册时间
2009-10-16
最后登录
2013-01-17
在线时间
29小时
发帖
74
搜Ta的帖子
精华
3
金钱
808
威望
93
贡献值
4
好评度
82
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2010-03-08
— 本帖被 XChinux 执行加亮操作(2016-09-18) —
声明:本文原创于yafeilinux的百度博客,
http://hi.baidu.com/yafeilinux
转载请注明出处。
从今天开始我们学习Qt数据库编程的内容。
先说明:我们以后使用现在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,该版本是2010年2月17日发布的。
数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。我们在Qt Creator的帮助中查找QtSql Module,其内容如下图:
可以看到这个模块是一组类的集合,使用这个模块我们需要加入头文件#include <QtSql>,而在工程文件中需要加入一行代码:QT += sql
这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。
QSqlDatabase
类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种:
而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt Creator安装目录下的qt\plugins\sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找。
QSqlQuery
类用来执行SQL语句。(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。)
下面我们就先利用这两个类来实现最简单的数据库程序,其他的类我们会在以后的教程中逐个学习到。
1.新建Qt控制台工程。
2.选择上QtSql模块,这样就会自动往工程文件中添加QT += sql 这行代码了。
3.修改main.cpp中的内容如下。
#include <QtCore/QCoreApplication>
#include <QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//添加数据库驱动
db.setDatabaseName(":memory:");
//数据库连接命名
if(!db.open())
//打开数据库
{
return false;
}
QSqlQuery query;
//以下执行相关QSL语句
query.exec("create table student(id int primary key,name varchar)");
//新建student表,id设置为主键,还有一个name项
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values(3,'xiaohong')");
//向表中插入3条记录
query.exec("select id,name from student where id >= 2");
//查找表中id >=2 的记录的id项和name项的值
while(query.next())
//query.next()指向查找到的第一条记录,然后每次后移一条记录
{
int ele0 = query.value(0).toInt();
//query.value(0)是id的值,将其转换为int型
QString ele1 =query.value(1).toString();
qDebug() << ele0 <<ele1 ;
//输出两个值
}
return a.exec();
}
我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的文件路径。
4.最终效果如下。
5.我们可以将主函数更改如下。
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
return a.exec();
}
这样运行程序就可以显示现在所有能用的数据库驱动了。
可以看到现在可用的数据库驱动只有三个。
共
条评分
欢迎访问我们的网站:www.yafeilinux.com
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
kubi08
UID:95970
注册时间
2010-04-24
最后登录
2010-04-26
在线时间
0小时
发帖
2
搜Ta的帖子
精华
0
金钱
20
威望
12
贡献值
0
好评度
2
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
1楼
发表于: 2010-04-24
强烈支持!!!!LZ真强~~
共
条评分
回复
举报
离线
mali3702
UID:115613
注册时间
2011-04-22
最后登录
2012-09-16
在线时间
29小时
发帖
37
搜Ta的帖子
精华
0
金钱
460
威望
47
贡献值
0
好评度
37
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
2楼
发表于: 2011-10-04
支持,顶一个!
共
条评分
回复
举报
离线
哥依然潇洒
UID:171900
注册时间
2016-04-25
最后登录
2022-10-12
在线时间
120小时
发帖
71
搜Ta的帖子
精华
0
金钱
720
威望
82
贡献值
0
好评度
72
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
3楼
发表于: 2016-08-19
while(query.next()) //query.next()指向查找到的第一条记录,然后每次后移一条记录
{
int ele0 = query.value(0).toInt(); //query.value(0)是id的值,将其转换为int型
QString ele1 =query.value(1).toString();
qDebug() << ele0 <<ele1 ; //输出两个值
}
我要想对第一条记录,第二条记录进行不同的操作,应该怎么做?求回答
共
条评分
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
Qt版百度云笔记
机械CAD
Qt文档计划
QTCN网站系统开发
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选