#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(); } int Line::getCount() { db_.open(); QString sql = QString("select * from table_line where state = '000'"); QSqlQuery query(db_); query.exec(sql); QSqlQueryModel *queryModel = new QSqlQueryModel(); queryModel->setQuery(query); int nRecordCount = queryModel->rowCount(); qDebug() << "表的条目数:" << nRecordCount; return nRecordCount; } 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(); }