195 lines
4.0 KiB
C++
195 lines
4.0 KiB
C++
#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)
|
||
{
|
||
if(open("fly_land_database","root","hzk200407140238"))
|
||
{
|
||
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;
|
||
|
||
if(open("fly_land_database","root","hzk200407140238"))
|
||
{
|
||
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;
|
||
if(open("fly_land_database","root","hzk200407140238"))
|
||
{
|
||
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;
|
||
}
|
||
|