赞
踩
回顾:
第一章:Qt的概述
第二章:在Ubuntu编写第一个Qt程序
第三章:Qt的字符串和字符编码
第四章:Qt的信号和槽
第五章:Qt容器窗口(父窗口)
第六章:面向对象的Qt编程
第七章:Qt设计师使用(designer)
第八章:Qt创造器的使用(qtcreator)
第九章:资源和图像
第十章:目录与定时器
第十一章:鼠标和键盘事件
sqlite3
,即可进入sqlite的命令操作界面.exit
可以退出控制终端sqlite3
命令行界面可以输入两种指令,一种是sqlite自身的配置和格式控制等相关指令,以"."
开头,可以使用".help"
查看这些指令的详细说明;还有一种是SQL指令,实现对数据的增删改查等相关操作。.database
查看数据库名字和对应的文件.tables
查看当前数据库包含的数据表schema
查看创建数据表的信息.mode 显示模式
,设置数据显示模式(list/tabs/column).nullvalue "string"
设置空白位置显示的字符串.backuo
文件名,备份数据库到指定的文件中.exit/.quit
退出ctrl+L
可以清屏SELECT * FROM company;
//查看company中全部内容CREATE TABLE 表名(
列名1 类型 约束,
列名2 类型 约束,
...
列名n 类型 约束
);
类型:INT(整型)、TEXT(字符串)、REAL(浮点数)
约束:NOT NULL(非空);UNIQUE(唯一);PRIMARY KEY(主键),包含唯一性,同时可以加快对数据的访问
DROP TABLE 表名;
注: 慎用,因为数据库表一旦删除,里面包含的数据也将消失
INSERT INTO 表名
(列名1, 列名2, ..., 列名n)
VALUES (数值1, 数值2, ..,数值n);
eg:
insert into student (id, name, scorc) values (10002, "weeks", 98);
DELETE FROM 表名 wehere 条件表达式;
eg:
delete from student where id=10002;
UPDATE 表名 SET 列名1=新数值, 列名2=新数值.. WHERE 表达式;
eg:
update student set score=100 where id=10001;
SELECT 列名1, 列名, ..., 列名n FROM 表名;
//或者
SELECT 列名1, 列名, ..., 列名n FROM 表名 WHERE 条件表达式;
//或者
SELECT 列名1, 列名, ..., 列名n FROM 表名 WHERE 条件表达式 ORDER BY 列名 排序方式;//排序方式有ASC(升序),DESC(降序)
eg:
select * from company where salary>=8000 or salary<3000;
//添加数据库驱动
QSqlDatebase db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库的名字,对于sqlite就是".db"数据文件
db.setDatabase("custom.db");
//打开数据库
bool ok = db.open();
QSqlQuery query;
QString str("str字符串");
query.exec(str);
QSqlQueryModel *model = new QSqlQueryModel;
//执行select语句并保存结果集到model
model->setQuery("SELECT 语句");
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
//显示结果QTableView
QTableView *view = new QTableView;
view->setModel(model);
view->show();
案例:学上成绩管理系统
#ifndef SQLITEDIALOG_H #define SQLITEDIALOG_H #include <QDialog> #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlQueryModel> #include <QSqlError> #include <QDebug> QT_BEGIN_NAMESPACE namespace Ui { class SqliteDialog; } QT_END_NAMESPACE class SqliteDialog : public QDialog { Q_OBJECT public: SqliteDialog(QWidget *parent = nullptr); ~SqliteDialog(); private: // void createDB(void); // void createTable(void); // void queryTable(void); private slots: void on_sortButton_clicked(); void on_insertButton_clicked(); void on_deleteButton_clicked(); void on_updateButton_clicked(); private: Ui::SqliteDialog *ui; QSqlDatabase db;// QSqlQueryModel model;// }; #endif // SQLITEDIALOG_H
#include "SqliteDialog.h" #include "ui_SqliteDialog.h" SqliteDialog::SqliteDialog(QWidget *parent) : QDialog(parent) , ui(new Ui::SqliteDialog) { ui->setupUi(this); createDB(); createTable(); queryTable(); } SqliteDialog::~SqliteDialog() { delete ui; } // sort slot void SqliteDialog::on_sortButton_clicked() { QString value = ui->valueCombox->currentText(); QString com = ui->condCombox->currentText(); QString str = QString( "SELECT * FROM student" "ORDER BY %1 %2").arg(value).arg(com); model.setQuery(str); //show result ui->tableView->setModel(&model); } //insert slot void SqliteDialog::on_insertButton_clicked() { QSqlQuery query; //get id,name, score int id = ui->idEdit->text().toInt(); QString name = ui->nameEdit->text(); double score = ui->scoreEdit->text().toDouble(); QString str = QString( "INSERT INTO student" "(id, name, score)" "VALUES (%1,'%2',%3)" ).arg(id).arg(name).arg(score); query.exec(str); queryTable(); } //delete slot void SqliteDialog::on_deleteButton_clicked() { QSqlQuery query; //get id int id = ui->idEdit->text().toInt(); QString str = QString( "DELETE FROM student WHERE id=(%1)").arg(id); query.exec(str); queryTable(); } //update slot void SqliteDialog::on_updateButton_clicked() { QSqlQuery query; //get id int id = ui->idEdit->text().toInt(); double score = ui->scoreEdit->text().toDouble(); QString str = QString( "UPDATE student SET score=(%1) WHERE id=(%2)").arg(score).arg(id); query.exec(str); queryTable(); } //creat databas void SqliteDialog::createDB(void) { //create connect wit sqlite database //1)add database drive db = QSqlDatabase::addDatabase("QSQLITE"); //2)database's name db.setDatabaseName("menu.db"); //3)open database if(db.open()==false){ qDebug() << db.lastError(); } } //create data table void SqliteDialog::createTable(void) { QSqlQuery query; QString str = QString( "CREATE TABLE student (" " id INT PRIMARY KEY," "name TEXT NOT NULL," "score REAL NOT NULL)"); //"abc""bcd"==>"abcbcd" //qDebug() << str; query.exec(str); } //query table data void SqliteDialog::queryTable(void) { QString str = QString("SELECT * FROM student"); //execute str corresponding sql and save result model.setQuery(str); //show result ui->tableView->setModel(&model); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。