forked from yydcaib/TCPServer
173 lines
3.5 KiB
C++
173 lines
3.5 KiB
C++
#include <QSql>
|
|
#include <QSqlDatabase>
|
|
#include <QDebug>
|
|
#include <QSqlError>
|
|
#include <QSqlQuery>
|
|
#include <QSqlRecord>
|
|
#include "database.h"
|
|
|
|
DataBase *DataBase::getInstance()
|
|
{
|
|
static DataBase sqldb;
|
|
return &sqldb;
|
|
}
|
|
|
|
DataBase::DataBase()
|
|
{
|
|
//先判断连接是否存在
|
|
if(QSqlDatabase::contains("testConnection"))
|
|
{
|
|
db_ = QSqlDatabase::addDatabase("testConnection");
|
|
}
|
|
else
|
|
{
|
|
//1.加载数据库驱动
|
|
db_ = QSqlDatabase::addDatabase("QSQLITE", "testConnection");
|
|
qDebug () << db_.connectionName();//打印连接名称
|
|
|
|
//2.设置数据库名
|
|
db_.setDatabaseName("usr.db");
|
|
qDebug () << db_.databaseName();
|
|
}
|
|
|
|
//3.打开数据库
|
|
if(db_.open())
|
|
{
|
|
qDebug() << "open success";
|
|
}
|
|
else
|
|
{
|
|
qDebug() << "open:" << db_.lastError().text();
|
|
return;
|
|
}
|
|
|
|
QString sql = "create table if not exists table_usr(name varchar(30) primary key, pwd varchar(20));";
|
|
QSqlQuery query(db_);
|
|
if (query.exec(sql))
|
|
{
|
|
qDebug() << "create success.";
|
|
}
|
|
db_.close();
|
|
}
|
|
|
|
|
|
//插入一个用户信息
|
|
bool DataBase::insertUsr(QString name, QString pwd)
|
|
{
|
|
QString sql = QString("insert into table_usr values('%1', '%2')")
|
|
.arg(name)
|
|
.arg(pwd);
|
|
|
|
|
|
// 1.打开数据
|
|
if (!db_.open())
|
|
{
|
|
qDebug() << "open:" << db_.lastError().text();
|
|
return false;
|
|
}
|
|
|
|
// 2.执行sql
|
|
QSqlQuery query(db_);
|
|
if (!query.exec(sql))
|
|
{
|
|
qDebug() << "insert:" << query.lastError().text();
|
|
return false;
|
|
}
|
|
|
|
//关闭数据库
|
|
db_.close();
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
//根据name查找用户
|
|
bool DataBase::findUsr(QString name)
|
|
{
|
|
QString sql = QString("select from table_usr where name = :name;");
|
|
//打开数据库
|
|
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(name == query.value(0).toString()) //用户存在
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
db_.close();
|
|
return false;
|
|
}
|
|
|
|
bool DataBase::Delete(QString name)
|
|
{
|
|
QString sql = QString("delete from table_usr where name = :name;");
|
|
//打开数据库
|
|
if(!db_.open())
|
|
{
|
|
qDebug() << "open fail" << db_.lastError().text();
|
|
exit(-1);
|
|
}
|
|
|
|
//执行删除操作
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
query.bindValue(":name",QVariant(name));
|
|
if (!query.exec())
|
|
{
|
|
qDebug() << "delete" << query.lastError().text();
|
|
return false;
|
|
}
|
|
|
|
//关闭数据库
|
|
db_.close();
|
|
return true;
|
|
}
|
|
|
|
//匹配name和pwd
|
|
bool DataBase::match(QString name, QString pwd)
|
|
{
|
|
QString sql = QString("select name, pwd from table_usr where name = :name;");
|
|
//打开数据库
|
|
if(!db_.open())
|
|
{
|
|
qDebug() << "open fail" << db_.lastError().text();
|
|
exit(-1);
|
|
}
|
|
|
|
QSqlQuery query(db_);
|
|
query.prepare(sql);
|
|
query.bindValue(":name",QVariant(name));
|
|
if(query.exec())
|
|
{
|
|
//匹配密码
|
|
if(query.next())
|
|
{
|
|
qDebug() << query.value(1).toString();
|
|
if(pwd == query.value(1).toString())
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//关闭数据库
|
|
db_.close();
|
|
|
|
return false;
|
|
}
|
|
|