您当前的位置: 首页 >  数据库

命运之手

暂无认证

  • 1浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【零基础学QT】【041】Qt操作数据库

命运之手 发布时间:2019-12-24 17:43:35 ,浏览量:1

使用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             
关注
打赏
1654938663
查看更多评论
0.0434s