133 lines
2.9 KiB
C++
133 lines
2.9 KiB
C++
#include "line.h"
|
|
|
|
Line *Line::getInstance()
|
|
{
|
|
static Line linedb;
|
|
return &linedb;
|
|
}
|
|
|
|
Line::Line()
|
|
{
|
|
//先判断连接是否存在
|
|
if(QSqlDatabase::contains("linesql"))
|
|
{
|
|
db_ = QSqlDatabase::addDatabase("linesql");
|
|
}
|
|
else
|
|
{
|
|
//1.加载数据库驱动
|
|
db_ = QSqlDatabase::addDatabase("QSQLITE", "linesql");
|
|
|
|
//2.设置数据库名
|
|
db_.setDatabaseName("line.db");
|
|
}
|
|
|
|
//3.打开数据库
|
|
if(db_.open())
|
|
{
|
|
qDebug() << "linedb open success";
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "open:" << db_.lastError().text();
|
|
return;
|
|
}
|
|
|
|
QString sql = "create table if not exists table_line(number varchar(10) primary key,linecode varchar(20),state varchar(3))";
|
|
|
|
QSqlQuery query(db_);
|
|
if (query.exec(sql))
|
|
{
|
|
qDebug() << "linedb success.";
|
|
}
|
|
|
|
//测试用
|
|
sql = QString("insert into table_line values('%1', '%2', '%3')")
|
|
.arg('3')
|
|
.arg("000")
|
|
.arg("000");
|
|
query.exec(sql);
|
|
db_.close();
|
|
}
|
|
|
|
QString Line::findCode(QString number)
|
|
{
|
|
QString sql = QString("select * from table_line where number = :number");
|
|
//打开数据库
|
|
if(!db_.open())
|
|
{
|
|
qDebug() << "open fail" << db_.lastError().text();
|
|
exit(-1);
|
|
}
|
|
|
|
//执行插入操作
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
query.bindValue(":number",QVariant(number));
|
|
query.exec();
|
|
QString linecode;
|
|
|
|
//查询成功
|
|
if(query.next())
|
|
{
|
|
linecode = query.value(1).toString();
|
|
qDebug() << "linecode:" << linecode;
|
|
|
|
}
|
|
|
|
db_.close();
|
|
|
|
return linecode;
|
|
|
|
}
|
|
|
|
QString Line::choose()
|
|
{
|
|
if(!db_.open())
|
|
{
|
|
qDebug() << "choose:" << db_.lastError().text();
|
|
}
|
|
|
|
QString sql = QString("select * from table_line where state = '%1' limit 1").arg("000");
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
//query.bindValue(":state",QVariant("000")); //选择未占用的车位
|
|
query.exec();
|
|
if(query.next())
|
|
{
|
|
QString number = query.value(0).toString();
|
|
qDebug() << number << "序号";
|
|
db_.close();
|
|
return number;
|
|
}
|
|
|
|
qDebug() << "choose:" << db_.lastError().text();
|
|
return "000";
|
|
}
|
|
|
|
|
|
void Line::setState(QString number)
|
|
{
|
|
db_.open();
|
|
QString sql = QString("update table_line set state = :state where number = :number");
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
query.bindValue(":number",QVariant(number));
|
|
query.bindValue(":state",QVariant("111")); //已占用的话为111
|
|
query.exec();
|
|
db_.close();
|
|
}
|
|
|
|
void Line::resetState(QString number)
|
|
{
|
|
db_.open();
|
|
QString sql = QString("update table_line set state = :state where number = :number");
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
query.bindValue(":number",QVariant(number));
|
|
query.bindValue(":state",QVariant("000")); //状态初始值为000
|
|
query.exec();
|
|
db_.close();
|
|
}
|
|
|