修复了数据库
This commit is contained in:
parent
308969700c
commit
af565e360a
52
database.cpp
52
database.cpp
|
@ -86,7 +86,7 @@ bool DataBase::insertUsr(QString name, QString pwd)
|
|||
//根据name查找用户
|
||||
bool DataBase::findUsr(QString name)
|
||||
{
|
||||
QString sql = QString("select from table_usr where name = :name;");
|
||||
QString sql = QString("select * from table_usr where name = :name;");
|
||||
//打开数据库
|
||||
if(!db_.open())
|
||||
{
|
||||
|
@ -175,24 +175,25 @@ bool DataBase::match(QString name, QString pwd)
|
|||
void DataBase::insertCode(QString name, QString code, QString number)
|
||||
{
|
||||
|
||||
QString sql = QString("update table_usr set code=:code, number=:number where name=:name");
|
||||
|
||||
//QString sql = QString("update table_usr set code = :code, number = :number where name = :name");
|
||||
QString sql = QString("update table_usr set code = '%1', number = '%2' where name = '%3'")
|
||||
.arg(code).arg(number).arg(name);
|
||||
// 1.打开数据
|
||||
if (!db_.open())
|
||||
{
|
||||
qDebug() << "open:" << db_.lastError().text();
|
||||
qDebug() << "insercode:" << db_.lastError().text();
|
||||
}
|
||||
|
||||
// 2.执行sql
|
||||
QSqlQuery query(db_);
|
||||
query.prepare(sql);
|
||||
query.bindValue(":code",QVariant(code));
|
||||
/*query.bindValue(":code",QVariant(code));
|
||||
query.bindValue(":number",QVariant(number));
|
||||
query.bindValue(":name",QVariant(name));
|
||||
query.bindValue(":name",QVariant(name));*/
|
||||
|
||||
if (!query.exec(sql))
|
||||
{
|
||||
qDebug() << "insert:" << query.lastError().text();
|
||||
qDebug() << "update:" << query.lastError().text();
|
||||
}
|
||||
|
||||
//关闭数据库
|
||||
|
@ -235,7 +236,7 @@ QString DataBase::matchCode(QString name, QString code)
|
|||
|
||||
void DataBase::resetCode(QString name)
|
||||
{
|
||||
QString sql = QString("update table_usr set code=:code, number=:number where name=:name");
|
||||
QString sql = QString("update table_usr set code = '000', number = '000' where name = '%1'").arg(name);
|
||||
|
||||
// 1.打开数据
|
||||
if (!db_.open())
|
||||
|
@ -246,9 +247,9 @@ void DataBase::resetCode(QString name)
|
|||
// 2.执行sql
|
||||
QSqlQuery query(db_);
|
||||
query.prepare(sql);
|
||||
query.bindValue(":code",QVariant("000"));
|
||||
/*query.bindValue(":code",QVariant("000"));
|
||||
query.bindValue(":number",QVariant("000"));
|
||||
query.bindValue(":name",QVariant(name));
|
||||
query.bindValue(":name",QVariant(name));*/
|
||||
|
||||
if (!query.exec(sql))
|
||||
{
|
||||
|
@ -257,3 +258,34 @@ void DataBase::resetCode(QString name)
|
|||
|
||||
}
|
||||
|
||||
QString DataBase::findCode(QString name)
|
||||
{
|
||||
QString sql = QString("select * from table_usr where name = :name;");
|
||||
QString code = "000";
|
||||
//打开数据库
|
||||
if(!db_.open())
|
||||
{
|
||||
qDebug() << "open fail" << db_.lastError().text();
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
//执行插入操作
|
||||
QSqlQuery query(db_);
|
||||
query.prepare(sql);
|
||||
query.bindValue(":name",QVariant(name));
|
||||
query.exec();
|
||||
|
||||
//查询成功
|
||||
if(query.next())
|
||||
{
|
||||
if(code == query.value(2).toString()) //获取取车码
|
||||
{
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
db_.close();
|
||||
return code;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,8 @@ public:
|
|||
//根据name查找用户
|
||||
bool findUsr(QString name);
|
||||
|
||||
QString findCode(QString name);
|
||||
|
||||
//匹配name和pwd
|
||||
bool match(QString name, QString pwd);
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock)
|
|||
QString code = json_data["data"].toString();
|
||||
QString number = p_this->database->matchCode(name,code);
|
||||
QString find_code = p_this->linedb->findCode(number);
|
||||
qDebug() << "取车时的number和linecode:" << number << find_code;
|
||||
p_this->linedb->resetState(number);
|
||||
QByteArray data_build, data_encrypt;
|
||||
data_build = p_this->protocol->data_maker(Protocol::CODE, QString("pick"), QString("server"),find_code);
|
||||
|
@ -63,9 +64,11 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock)
|
|||
{
|
||||
QString name = json_data["user"].toString();
|
||||
QString number = p_this->linedb->choose(); //获取一个可用的车位编号
|
||||
qDebug() << "获取到的可用车位编号是" << number;
|
||||
//随机生成取车码
|
||||
QString code = p_this->getRandomString(8);
|
||||
//更新取车码
|
||||
qDebug() << name << code << number;
|
||||
p_this->database->insertCode(name,code,number);
|
||||
p_this->linedb->setState(number);
|
||||
|
||||
|
@ -76,6 +79,17 @@ void DataManager::recv_from_cln(QByteArray &data, QTcpSocket *sock)
|
|||
p_this->server->sendToclient(sock, data_encrypt);
|
||||
|
||||
}
|
||||
else if(json_data["action"] == "update")
|
||||
{
|
||||
//登陆后自动获取取车码信息
|
||||
QString name = json_data["user"].toString();
|
||||
QString code = p_this->database->findCode(name);
|
||||
QByteArray data_build, data_encrypt;
|
||||
data_build = p_this->protocol->data_maker(Protocol::CODE, QString("update"), QString("server"),code);
|
||||
qDebug() << data_build;
|
||||
data_encrypt = p_this->protocol->data_encrypt(data_build);
|
||||
p_this->server->sendToclient(sock, data_encrypt);
|
||||
}
|
||||
}
|
||||
else if (json_data["type"] == "request")
|
||||
{
|
||||
|
|
30
line.cpp
30
line.cpp
|
@ -17,17 +17,15 @@ Line::Line()
|
|||
{
|
||||
//1.加载数据库驱动
|
||||
db_ = QSqlDatabase::addDatabase("QSQLITE", "linesql");
|
||||
qDebug () << db_.connectionName();//打印连接名称
|
||||
|
||||
//2.设置数据库名
|
||||
db_.setDatabaseName("line.db");
|
||||
qDebug () << db_.databaseName();
|
||||
}
|
||||
|
||||
//3.打开数据库
|
||||
if(db_.open())
|
||||
{
|
||||
qDebug() << "open success";
|
||||
qDebug() << "linedb open success";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -35,7 +33,7 @@ Line::Line()
|
|||
return;
|
||||
}
|
||||
|
||||
QString sql = "create table if not exists table_line(number varchar(10) primary key,state varchar(3));";
|
||||
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))
|
||||
|
@ -44,8 +42,9 @@ Line::Line()
|
|||
}
|
||||
|
||||
//测试用
|
||||
sql = QString("insert into table_line values('%1', '%2')")
|
||||
.arg('2')
|
||||
sql = QString("insert into table_line values('%1', '%2', '%3')")
|
||||
.arg('3')
|
||||
.arg("000")
|
||||
.arg("000");
|
||||
query.exec(sql);
|
||||
db_.close();
|
||||
|
@ -53,7 +52,7 @@ Line::Line()
|
|||
|
||||
QString Line::findCode(QString number)
|
||||
{
|
||||
QString sql = QString("select from table_line where name = :name;");
|
||||
QString sql = QString("select * from table_line where number = :number");
|
||||
//打开数据库
|
||||
if(!db_.open())
|
||||
{
|
||||
|
@ -84,37 +83,50 @@ QString Line::findCode(QString number)
|
|||
|
||||
QString Line::choose()
|
||||
{
|
||||
QString sql = QString("select from table_line where state = :state limit 1;");
|
||||
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.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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue