首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
数据库
> 详细
QT数据库操作
时间:
2015-08-20 00:59:17
阅读:
544
评论:
0
收藏:
0
[点我收藏+]
标签:
QT对数据库的支持
QtSql类用于对数据库的支持
使用是需包含
<QtSql>
库
包含以下类:
QSqlDatabase 类用于新建数据库
QSqlQuery用来来执行sql语句,如QSqlQuery query;query.exec("
create
table
student(ID
int
primary
key,name
varchar(20)
");
需要在.pro文件底部加上 QT +=sql 一句
Qt支持的数据库类型:
显示可用数据库驱动:
qDebug()<<
"avalible
sql
drivers:"
;
QStringList
drivers=
QSqlDatabase
::drivers();
foreach
(
QString
driver,drivers)
{
qDebug()<<
"/t"
<<driver;
}
return
a.exec();
linux系统下查看QT支持的数据库
进入此目录:pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$
pyd@ubuntu:/usr/local/Trolltech/Qt-4.6.3/plugins/sqldrivers$ ls
libqsqlite.so libqsqlite.so.debug libqsqlmysql.so
ldd .so文件,查看是否有not found
Qt中使用sqlite
#include <QtCore/QCoreApplication>
#include <QtSql>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //添加数据库驱动
db.setDatabaseName(“:memory:”); //数据库连接命名
//也可以写“e:test.db"
if(!db.open()) //打开数据库
{
return fals e;
}
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:”表示这是建立在内存中的数据库,也就是
说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的
文件路径
示例:
Qt中使用其他数据库
QT需要手动编译其他数据库的驱动代码,以插件的形式使用它们。
在QT帮助文档里搜索
SQL Database drivers
可以看到每种驱动的方法
sqlite数据库
sqlite是一款轻量级的数据库,经常被用在嵌入式,免费的Qt自带sqlite的驱动
在本地生成数据库,没有用户与密码设置
linux下sqlite的安装:
sudo apt-get install sqlite3
linux下sqlite的使用:
sqlite在当前目录下生成、打开数据库文件
命令行里输入“sqlite3 1.db”,如果1.db文件存在则会打开,不存在则创建,实际似乎在.database后创建
.database
.tables
.quit .exit
QT中使用myssql
setDatabaseName("test");//不能指定目录,不能加.db
//连接数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");//选择数据库类型
db.setDatabaseName("ods1");//设置数据库名称
if(isSqlConnected)
{
}
else
{
db.setHostName(ui->hostNameLineEdit->text());
db.setUserName(ui->userNameLineEdit->text());
db.setPort(ui->sqlPortLineEdit->text().toInt());
db.setPassword(ui->passwdLineEdit->text());
qDebug("set completed");
qDebug()<<ui->hostNameLineEdit->text()<<ui->userNameLineEdit->text()<<ui->sqlPortLineEdit->text().toInt()<<ui->passwdLineEdit->text();
}
if(db.open())//open! not isopen() !!!
{
qDebug("sql connected");
isSqlConnected = true;
}
else
{
qDebug("not connected");
}
注意事项
QSqlTableModel 和 QSqlQuery 等与数据库相关的类必须在数据库连接后建立才有效
来自为知笔记(Wiz)
QT数据库操作
标签:
原文地址:http://www.cnblogs.com/dongdongweiwu/p/4743683.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
数据库进阶
2021-07-29
在 Oracle 数据库中执行 SQL 语句遇到特殊字符的转义方式
2021-07-28
Windows Logstash同步 Sqlserver 到Elasticsearch
2021-07-26
mysql数据库(11):恢复数据
2021-07-26
mysql数据库(9):常用查询的例子
2021-07-26
SQLAlchemy 多对多
2021-07-26
ClickHouse的JDBC连接
2021-07-26
Apache HBase 1.7.1 发布,分布式数据库
2021-07-26
数据库常用架构和同步工作原理
2021-07-26
MySQL数据库设计规范(仅供参考)
2021-07-26
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!