QT------数据库的基本操作

通过昨晚和几天早上的学习,掌握QT数据库的相关操作

必须要在pro文件中添加  Qt += sql;

首先,需要与数据库进行连接

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("123456");
    db.setPort(3306);
也就是创建了一个名字叫做test的数据库,随后需要在数据库中建立一个表
    QString str = QString("create table student1(name varchar(32), num int, score double);");
    QSqlQuery query;
    query.exec(str);
创建完成之后,就可以进行插入,修改,删除,查询等操作了

首先是插入数据库,基本语句如下:

insert into student1(name,num,score) values ('%1',%2,%3)

然后是删除的语句:

select *from student1 where name = '%1'

修改的语句:

update student1 set num = '%1',score = '%2' where name = '%3'

随后补充一些在数据库中的操作语句

1、创建数据库

create database 数据库名;

2、查看数据库

show databases;

3、选择指定数据库

use 数据库名;

4、删除数据库

drop database 数据库名;

注:自动删除MySQL安装目录中的“C:/AppServ/MySQL/data”文件夹。

三、操作MySQL数据表

1、创建表

create table 表名 (column_name column_type not null,...)

create table语句的属性说明
属性说明属性说明
column_name字段名Primary key该列是否为主码
column_type字段类型AUTO_INCREMNT该列是否自动编号
Not null | null该列是否允许为空  

 

 

 

 

创建数据表后,“C:\AppServ\MySQL\data\数据库名\”中自动创建对应表文件(“表名.frm”,“表名.MYD”,“表名.MYI”)

2、查看数据库中的表

show tables;

3、查看数据库中所有的表

show tables;(前提是使用use database 数据库;)

4、查看数据表结构

describe 表名;

5、修改数据表结构

alter table 表名

  add [column] create_definition [first | after column_name]  //添加新字段

  add primary key (index_col_name,...)  //添加主码名称

  alter [column] col_name {set default literal |rop default}  //修改字段名称

  change [column] old_col_name create_definition  //修改字段名及类型

  modify [column] create_definition  //修改字段类型

  drop [column] col_name  //删除字段

  drop primary key  //删除主码

  rename [as] new_tablename  //更改表名

eg:alter table Admin_Info

    drop A_Pwd,

    rename as Admin_Info2;

6、删除指定数据表

drop table 表名;

四、操作MySQL数据

1、添加表数据

语法1:insert into 表名 values(值1,值2,...)(自增长的列应写null)

语法2:insert into 表名(字段1,字段2,...) values (值1,值2,...)

语法3:insert into 表名 set 字段1=值1,字段2=值2,...

2、更新表数据

update 表名 set 字段1=值1 where 查询条件

若无查询条件,表中所有数据行都会被修改。

3、删除表数据

delete from 表名 where 查询条件

若无查询条件,表中所有数据行都会被删除。

4、查询表数据

select * from 表名;

5、限制查询记录数

select * from 表名 limit[start] length

start:表示从第几行记录开始输出,0表示第1行

 

最后附上完整代码

 #include "widget.h"
#include "ui_widget.h"
#include <QTextCodec>
#include <QMessageBox>
#include <QtSql/QSqlDatabase>
#include <QSqlQuery>
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
 
    QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());//设置显示中文
    setWindowTitle("春春数据库");
 
 
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("123456");
    db.setPort(3306);
 
 
    if(!db.open()) //弹出窗口
    {
        QMessageBox::warning(this, "警告", "数据库打开失败");
    }
    else
    {
        ui->textEdit->setText("数据库打开成功");
    }
 
    QString str = QString("create table student1(name varchar(32), num int, score double);");
    QSqlQuery query;
    query.exec(str);
 
 
 
 
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::on_pushButton_clicked()
{
    QString name = ui->lineEdit->text();
    int num = ui->lineEdit_2->text().toInt();
    double scole = ui->lineEdit_3->text().toDouble();
    QString str = QString("insert into student1(name,num,score) values ('%1',%2,%3) ").arg(name).arg(num).arg(scole);
    QSqlQuery query;
    query.exec(str);
 
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
    ui->lineEdit_3->clear();
 
    ui->textEdit->setText("插入数据成功");
 
}
 
void Widget::on_pushButton_4_clicked()
{
    QString searchname = ui->lineEdit->text();
 
    if(searchname == NULL)
    {
        ui->textEdit->setText("你想搜索哪一个人");
 
    }
    else
    {
        QString str = QString("select *from student1 where name = '%1'").arg(searchname);
        QSqlQuery query;
        query.exec(str);
        QString name;
        int num;
        double scole;
 
        while(query.next())
        {
            name = query.value(0).toString();
            num = query.value(1).toInt();
            scole = query.value(2).toDouble();
 
        }
        if(name == NULL)
        {
            ui->textEdit->setText("查无此人");
            ui->lineEdit->clear();
            ui->lineEdit_2->clear();
            ui->lineEdit_3->clear();
        }
        else
        {
            ui->lineEdit->setText(name);
            ui->lineEdit_2->setText(QString().setNum(num));
            ui->lineEdit_3->setText(QString().setNum(scole));
            ui->textEdit->setText("查询成功");
 
        }
    }
}
 
 
void Widget::on_pushButton_2_clicked()
{
    QString name = ui->lineEdit->text();
    if(name == NULL)
    {
        ui->textEdit->setText("请输入想要删除的名字");
 
    }
    else
    {
        QString str = QString("select *from student1 where name = '%1'").arg(name);
        QSqlQuery query;
        query.exec(str);
        QString deletename;
        while(query.next())
        {
            deletename = query.value(1).toString();
        }
        if(deletename == NULL)
        {
            ui->textEdit->setText("没有这个人");
            ui->lineEdit->clear();
            ui->lineEdit_2->clear();
            ui->lineEdit_3->clear();
 
        }
        else
        {
            QString str = QString("delete from student1 where name = '%1'").arg(name);
            QSqlQuery query;
            query.exec(str);
            ui->lineEdit->clear();
            ui->lineEdit_2->clear();
            ui->lineEdit_3->clear();
            ui->textEdit->setText("删除成功");
 
        }
    }
}
 
void Widget::on_pushButton_3_clicked()
{
    QString name = ui->lineEdit->text();
    int num = ui->lineEdit_2->text().toInt();
    double score = ui->lineEdit_3->text().toDouble();
    if(name == NULL)
    {
        ui->textEdit->setText("请输入想要删除的名字");
 
    }
    else
    {
        QString str = QString("update student1 set num = '%1',score = '%2' where name = '%3'").arg(num).arg(score).arg(name);
        QSqlQuery query;
        query.exec(str);
        ui->lineEdit->clear();
        ui->lineEdit_2->clear();
        ui->lineEdit_3->clear();
        ui->textEdit->setText("修改成功");
    }
 
}
 
 
void Widget::on_pushButton_5_clicked()
{
    QString name[100];
    int num[100];
    double score[100];
    int i = 0;
    QString str = QString("select *from student1");
    QSqlQuery query;
    query.exec(str);
 
    while(query.next())
    {
        name[i] = query.value(0).toString();
        num[i] = query.value(1).toInt();
        score[i] = query.value(2).toDouble();
        i++;
    }
    ui->textEdit->clear();
    int j = 0;
    for(j = 0; j < i; j++)
    {
        QString str = QString("学号:%1  姓名:%2  成绩:%3").arg(name[j]).arg(num[j]).arg(score[j]);
        ui->textEdit->append(str);
    }
 
}
 
 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值