QT 5.6 自带的数据库QSqlite 使用实例
来源:互联网 发布:ubuntu 16.04 jenkins 编辑:程序博客网 时间:2024/05/21 19:42
#include <QSqlDriver>#include <QSqlRecord>
#include <QSqlDatabase>#include <QSqlQuery>
//1.连接 2.创建数据库3.建立表格4插入数据 数据库的表名可以为中文
//建立一个数据库连接
bool DataBase::createConnection()
{
//以后就可以用"CordinateData"与数据库进行连接了
QSqlDatabase db;
//= QSqlDatabase::addDatabase("QSQLITE", " CordinateData");//添加数据库驱动 创建连接
if (QSqlDatabase::contains("CordinateData"))
db= QSqlDatabase::database("CordinateData");
else
{
db= QSqlDatabase::addDatabase("QSQLITE", "CordinateData");
qDebug()<<"create connection success!";
}
QFile mFile("./xyDb.db");//如数据文件存在则删除
// if (mFile.exists())
// {
// mFile.remove();
// }
db.setDatabaseName(".//xyDb.db");//创建数据库
if (!db.open())
{
qDebug() << "Unable to establish database connection";
return false;
}
qDebug() << "Database open";
return true;
}
//创建数据库表
bool DataBase::createTable(QString tableName)
{
QSqlDatabase db = QSqlDatabase::database("CordinateData"); //建立数据库连接 id xdata ydata threshold flag range thresholdMin
QSqlQuery query(db);//注意 ‘%1’ 单引号不要少 tablename可以是中文
bool success = query.exec(QString("create table '%1'(id int primary key,xdata double,ydata double,threshold int,flag double,range int,thresholdMin int)").arg(tableName));
if (success)
{
qDebug() << QObject::tr("create table success!\n");
return true;
}
else
{
qDebug() << QObject::tr("create table failed\n");
return false;
}
}
//导入数据库, 建表插入//QString tableName, QVector<double> data_x, QVector<double> data_y,int threshold,double flag,int range,int thresholdMin
bool DataBase::insert(ObjectData obj)
{
QSqlDatabase db = QSqlDatabase::database("CordinateData"); //建立数据库连接
QSqlQuery query(db);
db.transaction();//事务
if (!createTable(obj.Name))
return false;
for (int i = 0; i < obj.y_data.size(); i++)
{
query.prepare(QString("insert into '%1' values(?, ?,?,?,?,?,?)").arg(obj.Name));
query.bindValue(0, i);
query.bindValue(1, obj.x_data.at(i));
query.bindValue(2, obj.y_data.at(i));
if (i == 0)
{
query.bindValue(3, obj.threshold);//默认阈值为1000;
query.bindValue(4, obj.flag);//最左右 与峰值的差值flag
query.bindValue(5, obj.range);//找峰值时左右幅度range
query.bindValue(6, obj.thresholdMin);//匹配不上 下降阈值幅度 匹配thresholdMin
}
else
{
query.bindValue(3, 0);
query.bindValue(4, 0);//最左右 与峰值的差值flag
query.bindValue(5, 0);//找峰值时左右幅度range
query.bindValue(6, 0);//匹配不上 下降阈值幅度 匹配thresholdMin
}
bool res=query.exec();
qDebug() << res;
}
if (db.commit())//提交事务 提高处理速度
{
qDebug() << "batch data";
}
return true;
}
//修改参数
bool DataBase::changeParametersByTableName(ObjectData obj)
{
QSqlDatabase db = QSqlDatabase::database("CordinateData"); //建立数据库连接
QSqlQuery query(db);
bool res = query.exec(QString("update '%1' set threshold = '%2',flag='%3',range='%4',thresholdMin='%5' where id=0").arg(obj.Name).arg(obj.threshold).arg(obj.flag).arg(obj.range).arg(obj.thresholdMin));
return res;
}
//查询所有信息
QSqlQuery DataBase::queryAll(QString tableName)
{
QSqlDatabase db = QSqlDatabase::database("CordinateData"); //建立数据库连接
QSqlQuery query(db);
if (query.exec(QString("select * from %1").arg(tableName)))
{
qDebug() << "query success";
}
QSqlRecord rec = query.record();
while (query.next())
{
qDebug() << query.value(0) << query.value(1)<<query.value(2)<<query.value(3);
}
return query;
}
- QT 5.6 自带的数据库QSqlite 使用实例
- Qt---自带的数据库QSQLITE
- Qt---自带的数据库QSQLITE
- QT 自带的数据库 QSQLITE
- Qt使用QSQLITE数据库
- Qt连接QSqlite数据库,使用QTableWidget显示数据总结
- 如何使用ORACLE自带的HR实例数据库?
- vs2013自带的数据库实例。
- vs2013使用QT自带的openGL
- 对QSqlite数据库的操作
- 对QSqlite数据库的操作
- 对QSqlite数据库的操作
- jdk 自带的数据库Derby使用
- 使用jdk自带的derby数据库
- QT学习之路————使用QT自带的QSqlDatabase类简单操作sqlite数据库
- 关于QT自带的打包工具windeployqt的使用
- matlab自带的分类器的使用实例
- VS2012自带的 性能分析 工具使用实例
- nginx优化
- Python笔记(二)--变量类型
- 在没有用户ID或者任何唯一性标识的情况下做个唯一标识
- springboot无法完成变量从pom到.properties文件自动替换的问题
- 可并堆(左偏树)简单学习
- QT 5.6 自带的数据库QSqlite 使用实例
- Graph’s Cycle Component(并查集优化)
- 方差计算过程中分母为什么不是n?
- gitlab备份、恢复、迁移、升级
- 1005.Number Sequence
- H5随笔第一课
- 关于ArcGlobe动画的一些心得
- laravel 服务容器实例——深入理解IoC模式
- ##ECMAScript5补充