Qt---自带的数据库QSQLITE
2016-07-23 22:36
465 查看
database.h
database.cpp
main.cpp
运行结果
![](http://img.blog.csdn.net/20160723223556985)
项目名称为”sqlex”,然后就可以在与当前项目同一级目录下的“build-SQLEx-Desktop_Qt_5_7_0_MinGW_32bit-Debug”中可以看到qtDb.db数据库文件,该数据库可以用软件SQLite直接打开
#ifndef DATABASE_H #define DATABASE_H #include <QTextCodec> #include <QSqlDatabase> #include <QSqlQuery> #include <QTime> #include <QSqlError> #include <QtDebug> #include <QSqlDriver> #include <QSqlRecord> class DataBase { public: bool createConnection(); //创建一个连接 bool createTable(); //创建数据库表 bool insert(); //出入数据 bool queryAll(); //查询所有信息 bool updateById(int id); //更新 bool deleteById(int id); //删除 bool sortById(); //排序 }; #endif // DATABASE_H
database.cpp
#include "database.h" //建立一个数据库连接 bool DataBase::createConnection() { //以后就可以用"sqlite1"与数据库进行连接了 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "sqlite1"); db.setDatabaseName(".//qtDb.db"); if( !db.open()) { qDebug() << "无法建立数据库连接"; return false; } return true; } //创建数据库表 bool DataBase::createTable() { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); bool success = query.exec("create table automobil(id int primary key,attribute varchar," "type varchar,kind varchar,nation int,carnumber int,elevaltor int," "distance int,oil int,temperature int)"); if(success) { qDebug() << QObject::tr("数据库表创建成功!\n"); return true; } else { qDebug() << QObject::tr("数据库表创建失败!\n"); return false; } } //向数据库中插入记录 bool DataBase::insert() { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); query.prepare("insert into automobil values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); long records = 10; for(int i=0; i<records; i++) { query.bindValue(0, i); query.bindValue(1, "四轮"); query.bindValue(2, "轿车"); query.bindValue(3, "富康"); query.bindValue(4, rand()%100); query.bindValue(5, rand()%10000); query.bindValue(6, rand()%300); query.bindValue(7, rand()%200000); query.bindValue(8, rand()%52); query.bindValue(9, rand()%100); bool success=query.exec(); if(!success) { QSqlError lastError = query.lastError(); qDebug() << lastError.driverText() << QString(QObject::tr("插入失败")); return false; } } return true; } //查询所有信息 bool DataBase::queryAll() { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); query.exec("select * from automobil"); QSqlRecord rec = query.record(); qDebug() << QObject::tr("automobil表字段数:" ) << rec.count(); while(query.next()) { for(int index = 0; index < 10; index++) qDebug() << query.value(index) << " "; qDebug() << "\n"; } } //根据ID删除记录 bool DataBase::deleteById(int id) { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); query.prepare(QString("delete from automobil where id = %1").arg(id)); if(!query.exec()) { qDebug() << "删除记录失败!"; return false; } return true; } //根据ID更新记录 bool DataBase::updateById(int id) { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); query.prepare(QString("update automobil set attribute=?,type=?," "kind=?, nation=?," "carnumber=?, elevaltor=?," "distance=?, oil=?," "temperature=? where id=%1").arg(id)); query.bindValue(0,"四轮"); query.bindValue(1,"轿车"); query.bindValue(2,"富康"); query.bindValue(3,rand()%100); query.bindValue(4,rand()%10000); query.bindValue(5,rand()%300); query.bindValue(6,rand()%200000); query.bindValue(7,rand()%52); query.bindValue(8,rand()%100); bool success=query.exec(); if(!success) { QSqlError lastError = query.lastError(); qDebug() << lastError.driverText() << QString(QObject::tr("更新失败")); } return true; } //排序 bool DataBase::sortById() { QSqlDatabase db = QSqlDatabase::database("sqlite1"); //建立数据库连接 QSqlQuery query(db); bool success=query.exec("select * from automobil order by id desc"); if(success) { qDebug() << QObject::tr("排序成功"); return true; } else { qDebug() << QObject::tr("排序失败!"); return false; } }
main.cpp
#include <QCoreApplication> #include "database.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextCodec::setCodecForLocale(QTextCodec::codecForLocale()); DataBase d; d.createConnection(); //创建连接 //d.createTable(); //d.insert(); d.queryAll(); //已经完成过createTable(), insert(), 现在进行查询 return 0; }
运行结果
项目名称为”sqlex”,然后就可以在与当前项目同一级目录下的“build-SQLEx-Desktop_Qt_5_7_0_MinGW_32bit-Debug”中可以看到qtDb.db数据库文件,该数据库可以用软件SQLite直接打开
相关文章推荐
- QT QString 很全的使用
- Qt---处理粘包
- Qt带来的是更加低廉的开发成本和学习成本,对于很多小公司而言,这种优势足以让他们获得更大的利润空间 good
- 纪念下自学QT 第十天 终于写成了串口调试助手
- Qt 的QString类的使用
- ubuntu下安装pyqt5
- pyqt5模块
- Qt编程之串口通信
- QMenuBar
- QT:关闭外部程序
- AbstractAxis QML 类型翻译
- Ubuntu 14.04 LTS + Qt 5.2.1 源码编译搭建环境
- windows下Qt Creator 调试器配置
- Legend QML 类型翻译
- Qt5.7.0的安装下载(windows)
- 从零开始移植QT4.8.5之四--交叉编译QT程序并运行在OK6410上
- QT简单获取外网IP
- QT中自定义快捷键
- YY语音从4.0版本开始是基于Qt的开发过程,以及碰到的问题
- QTabWiget Change Color 改变颜色