parking_lot_server/line.cpp

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();
}