SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
SQLite是一种轻量级的嵌入式数据库,它的数据库就是一个文件:
可以使用数据库可视化软件打开数据库文件,查看数据库内的数据:
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
database.setDatabaseName("MyDataBase.db");
if(!database.open())
qDebug()<<"Error: Failed to connect database."<<database.lastError();
else
qDebug()<<"Succeed to connect database.";
//创建表格
QSqlQuery sql_query;
if(!sql_query.exec("create table student(id int primary key, name text, age int)"))
qDebug()<<"Error: Failed to create table."<< sql_query.lastError();
else
qDebug()<<"Succeed to create table.";
//插入数据
if(!sql_query.exec("INSERT INTO student VALUES(1, \"Jim\", 23)"))
qDebug()<<"Error: Failed to insert data."<<sql_query.lastError();
else
qDebug()<<"Succeed to insert data.";
if(!sql_query.exec("INSERT INTO student VALUES(2, \"Tom\", 22)"))
qDebug()<<"Error: Failed to insert data."<<sql_query.lastError();
else
qDebug()<<"Succeed to insert data.";
//查询数据
sql_query.exec("select * from student");
if(!sql_query.exec())
qDebug()<<"Error: Failed to select data.";
else
{
while(sql_query.next())
{
int id = sql_query.value(0).toInt();
QString name = sql_query.value(1).toString();
int age = sql_query.value(2).toInt();
qDebug()<<QString("id: %1, name: %2, age: %3").arg(id).arg(name).arg(age);
}
}
//修改数据
sql_query.exec("update student set name = \"QT\" where id = 1");
if(!sql_query.exec())
qDebug()<<"Error: Failed to update date."<<sql_query.lastError();
else
qDebug()<<"Succeed to update data.";
//删除数据
sql_query.exec("delete from student where id = 1");
if(!sql_query.exec())
qDebug()<<"Error: Failed to delete data."<<sql_query.lastError();
else
qDebug()<<"Succeed to delete data.";
//删除表格
sql_query.exec("drop table student");
if(sql_query.exec())
qDebug()<<"Error: Failed to drop table."<<sql_query.lastError();
else
qDebug()<<"Succeed to drop table.";
//关闭数据库
database.close();