【QT】连接MySQL并简单使用

一、安装MySQL

教程参考:超级详细的mysql数据库安装指南

二、查看QT数据库驱动

QtSql模块使用数据库驱动来和不同的数据库接口进行通信。由于Qt的SQL模型的接口是独立于数据库的,所以所有数据库特定的代码都包含在了这些驱动中。Qt现在支持的数据库驱动如下图所示。
在这里插入图片描述
.pro文件中添加

QT       += core sql

main.c 文件中添加

    QApplication a(argc, argv);
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
       qDebug() << driver;

运行结果

在这里插入图片描述

三、连接数据库

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("localhost");  //连接本地主机
        db.setPort(3306);

        db.setUserName("用户名");
        db.setPassword("密码");
        db.setDatabaseName("test");
        bool ok = db.open();
        if (ok){
            qDebug()<<"open ok!";
        }
        else {

            qDebug()<<"error open database because"<<db.lastError().text();
        }

四、创建数据库

创建数据库的指令

	格式1create database 数据库名 charset=utf8;
	示例1create database stu charset=utf8;
	格式2create database if not exists 数据库名 character set utf8;
		说明:如果该数据库不存在则创建该数据库
	示例2create database if not exists stu character set utf8;

在qt中创建数据库

        QSqlQuery query(db);
        if(query.exec("create database test3"))
            qDebug()<<"create database ok";

选中需要使用的数据库 test3
需要在数据库打开之前进行设置,所以要先关闭数据库,设置之后再打开

        db.close();
        db.setDatabaseName("test3");
        db.open();

五、创建数据表

指令

	格式:create table 表名(列及类型);
	说明:
		auto_increment                  表示自增长
		primary key                     表示主键
		not null                        表示不为空
		unique                          表示唯一
	示例:create table student(id int primary key,name varchar(20),age int);

qt中的代码

        //新建student表,id设置为主键,还有一个name项,一个年龄项
        if(query.exec("create table student(id int primary key,name varchar(20),age int)"))
            qDebug()<<"create ok";

六、增,删,改,查

    //向表中插入3条记录
    ok = query.exec("insert into student values(1,'xiaogang',20)")
            && query.exec("insert into student values(2,'xiaoming',21)")
            && query.exec("insert into student values(3,'xiaohong',23)");
    if(ok) qDebug()<<"insert ok";
    
    //删除表中age = 21 的数据
    if(query.exec("delete from student where age = 21"))
        qDebug()<<"delete ok";
    
    //查找表中id >=2 的记录的id项和name项的值
    query.exec("select id,name from student where id = 2");
    if(query.numRowsAffected() != 0)//查找结果不为空,依次打印
        while(query.next())
        {
            //query.value(0)是id的值,将其转换为int型
            int value0 = query.value(0).toInt();
            QString value1 = query.value(1).toString();
            //输出两个值
            qDebug() << value0 << value1 ;
        }
    else
        qDebug()<<"no result";
    //更新数据
    ok = query.exec("update student set age=16 where id=1");
    if(ok) qDebug()<<"update ok";

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值