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;


}

原创粉丝点击