2025-06-10 10:00:04 +08:00
|
|
|
|
#include "DogDatabase.h"
|
|
|
|
|
|
|
|
|
|
|
|
DogDatabase *DogDatabase::getInstance()
|
|
|
|
|
|
{
|
|
|
|
|
|
static DogDatabase db;
|
|
|
|
|
|
return &db;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DogDatabase::~DogDatabase()
|
|
|
|
|
|
{
|
|
|
|
|
|
close();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
DogDatabase::DogDatabase()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_sqlDb = QSqlDatabase::addDatabase("QMYSQL");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//添加记录
|
|
|
|
|
|
bool DogDatabase::add(const Dog &data)
|
|
|
|
|
|
{
|
2025-06-10 10:40:34 +08:00
|
|
|
|
if(open("fly_land_database","root","hzk200407140238"))
|
2025-06-10 10:00:04 +08:00
|
|
|
|
{
|
|
|
|
|
|
beginAddFiled("dogdatabase");
|
|
|
|
|
|
addFiled("id");
|
|
|
|
|
|
addFiled("state");
|
|
|
|
|
|
addFiled("ip");
|
|
|
|
|
|
addFiled("port");
|
|
|
|
|
|
addFiled("lon");
|
|
|
|
|
|
addFiled("lat");
|
|
|
|
|
|
endAddFiled();
|
|
|
|
|
|
|
|
|
|
|
|
beginAddRow();
|
|
|
|
|
|
addValue(data.id);
|
|
|
|
|
|
addValue(data.state);
|
|
|
|
|
|
addValue(data.ip);
|
|
|
|
|
|
addValue(data.port);
|
|
|
|
|
|
addValue(data.lon);
|
|
|
|
|
|
addValue(data.lat);
|
|
|
|
|
|
endAddRow();
|
|
|
|
|
|
|
|
|
|
|
|
m_valueSql = m_valueSql.left(m_valueSql.length()-1);
|
|
|
|
|
|
QString sql;
|
|
|
|
|
|
sql = m_headerSql + m_valueSql;
|
|
|
|
|
|
return exec(sql);
|
|
|
|
|
|
}
|
|
|
|
|
|
close();
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//查询位置信息的记录
|
|
|
|
|
|
Point DogDatabase::ReturnUAVPosition(QString id)
|
|
|
|
|
|
{
|
|
|
|
|
|
Point position;
|
|
|
|
|
|
position.lon = 0;
|
|
|
|
|
|
position.lat = 0;
|
|
|
|
|
|
|
2025-06-10 10:40:34 +08:00
|
|
|
|
if(open("fly_land_database","root","hzk200407140238"))
|
2025-06-10 10:00:04 +08:00
|
|
|
|
{
|
|
|
|
|
|
QSqlQuery query(m_sqlDb);
|
|
|
|
|
|
|
|
|
|
|
|
QString strQuery;
|
|
|
|
|
|
strQuery = "SELECT lon, lat FROM ";
|
|
|
|
|
|
strQuery += "dogdatabase";
|
|
|
|
|
|
strQuery += " WHERE id = ";
|
|
|
|
|
|
strQuery += id;
|
|
|
|
|
|
|
|
|
|
|
|
qDebug()<<strQuery;
|
|
|
|
|
|
|
|
|
|
|
|
query.prepare(strQuery);
|
|
|
|
|
|
bool isSuccess = query.exec();
|
|
|
|
|
|
if(isSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
while(query.next())
|
|
|
|
|
|
{
|
|
|
|
|
|
double lon = query.value(0).toDouble();
|
|
|
|
|
|
double lat = query.value(1).toDouble();
|
|
|
|
|
|
|
|
|
|
|
|
position.lon = lon;
|
|
|
|
|
|
position.lat = lat;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return position;
|
|
|
|
|
|
}
|
|
|
|
|
|
close();
|
|
|
|
|
|
return position;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//返回状态信息
|
|
|
|
|
|
int DogDatabase::giveInfo(QString id)
|
|
|
|
|
|
{
|
|
|
|
|
|
int state = -1;
|
2025-06-10 10:40:34 +08:00
|
|
|
|
if(open("fly_land_database","root","hzk200407140238"))
|
2025-06-10 10:00:04 +08:00
|
|
|
|
{
|
|
|
|
|
|
QSqlQuery query(m_sqlDb);
|
|
|
|
|
|
|
|
|
|
|
|
QString strQuery;
|
|
|
|
|
|
strQuery = "SELECT state FROM ";
|
|
|
|
|
|
strQuery += "dogdatabase";
|
|
|
|
|
|
strQuery += " WHERE id = ";
|
|
|
|
|
|
strQuery += id;
|
|
|
|
|
|
|
|
|
|
|
|
qDebug()<<strQuery;
|
|
|
|
|
|
|
|
|
|
|
|
query.prepare(strQuery);
|
|
|
|
|
|
bool isSuccess = query.exec();
|
|
|
|
|
|
if(isSuccess)
|
|
|
|
|
|
{
|
|
|
|
|
|
while(query.next())
|
|
|
|
|
|
{
|
|
|
|
|
|
state = query.value(0).toInt();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return state;
|
|
|
|
|
|
}
|
|
|
|
|
|
close();
|
|
|
|
|
|
return state;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//——————————————————私有方法————————————————————
|
|
|
|
|
|
//建立连接
|
|
|
|
|
|
bool DogDatabase::open(const QString &dbName,const QString &userName,const QString &passwd)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_sqlDb.setHostName("localhost"); // 本地数据库 远程DB是:ipaddress
|
|
|
|
|
|
m_sqlDb.setPort(3306); // 设置端口号
|
|
|
|
|
|
m_sqlDb.setDatabaseName(dbName);
|
|
|
|
|
|
m_sqlDb.setUserName(userName);
|
|
|
|
|
|
m_sqlDb.setPassword(passwd);
|
|
|
|
|
|
|
|
|
|
|
|
if(!m_sqlDb.open())
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug()<<"连接失败!";
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
qDebug()<<"连接成功!";
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::close()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_sqlDb.close();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::beginAddFiled(const QString &tableName)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_tableName = tableName;
|
|
|
|
|
|
m_fieldName.clear();
|
|
|
|
|
|
m_headerSql.clear();
|
|
|
|
|
|
m_valueSql.clear();
|
|
|
|
|
|
m_fieldAdd = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::addFiled(const QString &filedName)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_fieldName.append(filedName);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::endAddFiled()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_headerSql = QString("INSERT INTO %0 (%1) values").arg(m_tableName).arg(m_fieldName.join(","));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::beginAddRow()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_valueSql += "(";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::addValue(const QVariant &value)
|
|
|
|
|
|
{
|
|
|
|
|
|
m_valueSql += QString("\'%0\',").arg(value.toString());
|
|
|
|
|
|
m_fieldAdd++;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void DogDatabase::endAddRow()
|
|
|
|
|
|
{
|
|
|
|
|
|
m_valueSql = m_valueSql.left(m_valueSql.length() - 1);
|
|
|
|
|
|
m_valueSql += "),";
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool DogDatabase::exec(const QString &sql)
|
|
|
|
|
|
{
|
|
|
|
|
|
QSqlQuery query(m_sqlDb);
|
|
|
|
|
|
bool success = query.exec(sql);
|
|
|
|
|
|
return success;
|
|
|
|
|
|
}
|
|
|
|
|
|
|