使用ODBC 数据库种类繁多,由于版权原因,Qt并未包含某些数据库的驱动,比如MySQL,建议使用ODBC来取代特定数据库 ODBC,开放数据库连接,用于将不同的数据库操作转化为统一的操作接口,从而解决不同数据库之间的合作和迁移问题 以MySQL为例,我们只要安装对应的ODBC驱动( MySQL Connector ODBC),然后在操作系统中添加一个ODBC数据源,指向该数据库地址,之后我们就可以通过该ODBC数据源操作MySQL数据库 就算以后MySQL数据库更换为其它数据库,我们也只需要修改ODBC数据源即可,不需要修改代码 当然,在Qt中还有一个最大的好处,就是不用考虑不同的数据库驱动问题,由于没有自带所有主流数据库的驱动,有些驱动手动配置极其麻烦 表结构设计 本篇博客用到两个表,用户表(user)和角色表(role),用户表中的user_role通过外键引用角色表的role_id字段
//角色表
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`role_id` int(20) NOT NULL AUTO_INCREMENT,
`role_name` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
PRIMARY KEY (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
//用户表
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`user_account` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`user_password` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`user_nickname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`user_realname` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`org_id` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`org_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`dept_id` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`dept_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`user_role` int(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk` (`user_role`),
CONSTRAINT `fk` FOREIGN KEY (`user_role`) REFERENCES `role` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
打开数据库
//配置并打开数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("animal");
db.setUserName("root");
db.setPassword("123456");
db.open();
查询数据 通过游标来迭代访问行数据,通过列索引或列名来遍历列数据
//查询数据
QSqlQuery query(db);
query.exec("select * from user");
while (query.next())
qdebug
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?