基于SQLITE的简易学生管理界面

基于SQLITE的简易学生管理界面_第1张图片

Sqlite命令行程序

创建数据表

CREATE TABLE 表名(列名1 类型 [约束],列名2 类型 [约束],...);

常用的类型

INT(整形) TEXT(字符串) REAL(浮点数)

常用的约束

PRIMARY KEY(主键):表示该列数据唯一,可以加快数据访问。

NOT NULL(非空):该列数据不能为空

删除数据表

DROP TABLE 表名

删除数据表实例

DROP TABLE testTable

1.向数据表中插入数据

INSERT INTO 表名 (列名1,列名2,...) VALUES(数值1,数值2,...);

如果要为表中所有列添加值,并且插入列的顺序和创建表的顺序相同,可以不需要在Sqlite查询中指定列名

INSERT INTO 表名 VALUES(数值1,数值2,...);

插入数据实例

INSERT INTO company (id,name,age,salary) VALUES(1001,'小乔‘,24,11000);

INSERT INTO company VALUES(1002,'大乔‘,26,14000);

2.从数据表删除数据

DELETE FROM 表名 WHERE 条件表达式;

注:可以没有where子句,但数据表的所有数据都将被删除;

如果有多个条件可以使用逻辑与(and)或逻辑或(or)连接

删除数据实例

DELETE FROM company WHERE id=1001;

DELETE FROM company WHERE address='成都' and salary<1000;

3.修改数据表中的数据

UPDATE 表名 SET 列名1=新数值,列名2=新数值,...,WHERE 条件表达式;

注:可以没有WHERE子句,但数据表的所有数据都将被修改;

"新数值"可以是一个常数,也可以是一个表达式。

修改数据实例

UPDATE company SET age=45 WHERE id=1001;

UPDATE company SET salary=salary+2000 WHERE age>=30 and age<=35;

4.查询数据表中的数据

SELECT 列名1,列名2,... FROM 表名;

SELECT 列名1,列名2,... FROM 表名 WHERE 条件表达式;

SELECT 列名1,列名2,... FROM 表名 WHERE 条件表达式 ORDER BY 列名 排序方式

注:ORDER BY 子句可以和WHERE子句配合使用,也可以单独使用;

注:排序方式 ASC------升序 DESC------降序

查询操作实例

SELECT * FROM company WHERE salary>10000 or salary<3500;

SELECT * FROM company ORDER BY id ASC;

代码如下:widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include
#include
#include
#include
#include
#include

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    //创建数据库
    void createDB();
    //创建数据表
    void createTable();
    //查询
    void queryTable();


private slots:
    //插入
    void on_insertButton_clicked();
    //删除
    void on_deleteButton_clicked();
    //修改
    void on_updateButton_clicked();
    //排序
    void on_sortButton_clicked();

    void on_findButton_clicked();

private:
    Ui::Widget *ui;

    QSqlDatabase db;//建立和数据库连接
    QSqlQueryModel model;//保存结果集
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include
//实现增删改查操作
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    createDB();

    createTable();

    queryTable();
}

Widget::~Widget()
{
    delete ui;
}

//创建数据库
void Widget::createDB()
{
    //添加数据库驱动
    db=QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库名字(文件名)
    db.setDatabaseName("student.db");

    //打开数据库
    if(db.open()==true)
    {
        qDebug()<<"创建/打开数据库成功!";
    }
    else
    {
      qDebug()<<"创建/打开数据库失败!";
    }

}

void Widget::createTable()
{
    QSqlQuery query;
    QString str=QString("CREATE TABLE student ("
                        "id INT PRIMARTY KEY NOT NULL,"
                        "name TEXT NOT NULL,"
                        "score REAL NOT NULL)");
    if(query.exec(str)==false)
    {
        qDebug()<tableView->setModel(&model);

}
//插入
void Widget::on_insertButton_clicked()
{
    QSqlQuery query;
    int id=ui->idEdit->text().toInt();
    //错误提示
    if(id==0)
    {
        QMessageBox::critical(this,"Error","ID输入不能为空!");
        return;
    }
    QString name=ui->nameEdit->text();
    //错误提示
    if(name=="")
    {
        QMessageBox::critical(this,"Error","姓名输入错误!");
        return;
    }
    double score=ui->scoreEdit->text().toDouble();
    if(score<0 ||score>100)
    {
        QMessageBox::critical(this,"Error","成绩输入错误!");
        return;
    }
    QString str=QString("INSERT INTO student VALUES(%1,'%2',%3)"
                        ).arg(id).arg(name).arg(score);

    if(query.exec(str)==false)
    {
        qDebug()<idEdit->text().toInt();
    QString str=QString("DELETE FROM student WHERE id=%1").arg(id);

    //删除提醒
    if (QMessageBox::question(this,"删除","确定要删除吗?",
        QMessageBox::Yes|QMessageBox::No)==QMessageBox::No)
    {
        return;
    }
    if(query.exec(str)==false)
    {
        qDebug()<idEdit->text().toInt();
    double score=ui->scoreEdit->text().toDouble();
    QString str=QString("UPDATE student SET score=%1 WHERE id=%2").arg(score).arg(id);

    if(query.exec(str)==false)
    {
        qDebug()<valuecomboBox->currentText();
    //获取排序方式
    QString condition;
    if(ui->condcomboBox->currentIndex()==0)
    {
        condition="ASC";//升序
    }
    else
    {
        condition="DESC";//降序
    }

    QString str=QString ("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);

    //查询和显示
    model.setQuery(str);
    ui->tableView->setModel(&model);

}

void Widget::on_findButton_clicked()
{
    //获取排序列名
    int id =ui->idEdit->text().toInt();

    QString str=QString ("SELECT * FROM student WHERE id=%1 ").arg(id);

    //查询和显示
    model.setQuery(str);
    ui->tableView->setModel(&model);


}

你可能感兴趣的:(sqlite,数据库,sql)