· 4 years ago · Dec 15, 2020, 12:54 PM
1#include "db_manager.h"
2
3db_manager::db_manager()
4{
5 JSONhelper json;
6 common_path = json.path_to_save;
7 road_name = json.road_name;
8 direction = json.direction;
9 path = common_path + "\\" + road_name + "\\" + direction + "\\" + "data.db";
10}
11
12
13
14void db_manager::add_mins( GGA gga, RMC rmc, INS ins, qint32 meters){
15
16
17 dbase.setDatabaseName(path);
18 if (!dbase.open()) {
19 qDebug() << "Ошибка открытия основной базы данных";
20 }
21 QSqlQuery timeline_triger(dbase);
22
23
24 QSqlQuery timeline_query(dbase);
25 QString timeline_create = "CREATE TABLE IF NOT EXISTS TIMELINE (METERS BIGINT NOT NULL, DATE TEXT NOT NULL, TIME TEXT NOT NULL);";
26 if (!timeline_query.exec(timeline_create)) {
27 qDebug() << "Ошибка при создании таблицы TIMELINE";
28 }
29 QDate date = QDate::currentDate(); // возвращаем текущую дату
30 QTime time = QTime::currentTime(); // возвращаем текущее время
31 QString timeline_insert = "INSERT INTO TIMELINE (METERS, DATE, TIME) values (:METERS, :DATE, :TIME);";
32 timeline_query.prepare(timeline_insert);
33 timeline_query.bindValue(":METERS",meters);
34 timeline_query.bindValue(":DATE",date);
35 timeline_query.bindValue(":TIME",time);
36 if(!timeline_query.exec()){
37 qDebug()<<"Ошибка вставки в таблицу TIMELINE";
38 }
39
40
41 QSqlQuery height_query(dbase);
42 QString height_create = "CREATE TABLE IF NOT EXISTS HEIGHT (METERS BIGINT NOT NULL, HEIGHT REAL NOT NULL);";
43 if (!height_query.exec(height_create)) {
44 qDebug() << "Ошибка при создании таблицы HEIGHT"<<height_query.lastError().text();
45 }
46 QString height_insert = "INSERT INTO HEIGHT (METERS, HEIGHT) values (:METERS, :HEIGHT);";
47 height_query.prepare(height_insert);
48 height_query.bindValue(":METERS",meters);
49 height_query.bindValue(":HEIGHT",gga.getAnten_height());
50 if(!height_query.exec()){
51 qDebug()<<"Ошибка вставки в таблицу HEIGHT"<<height_query.lastError().text();
52 }
53
54
55 QSqlQuery slopes_query(dbase);
56 QString slopes_create = "CREATE TABLE IF NOT EXISTS SLOPES (METERS BIGINT NOT NULL, LONG_SLOPE REAL NOT NULL, LONG_SLOPE_PR REAL NOT NULL, LAT_SLOPE REAL NOT NULL, LAT_SLOPE_PR REAL NOT NULL);";
57 if (!slopes_query.exec(slopes_create)) {
58 qDebug() << "Ошибка при создании таблицы SLOPES"<<slopes_query.lastError().text();
59 }
60 QString slopes_insert = "INSERT INTO SLOPES (METERS, LONG_SLOPES, LONG_SLOPES_PR, LAT_SLOPES, LAT_SLOPES_PR) values (:METERS, :LONG_SLOPES, :LONG_SLOPES_PR, :LAT_SLOPES, :LAT_SLOPES_PR);";
61 slopes_query.prepare(slopes_insert);
62 slopes_query.bindValue(":METERS",meters);
63 slopes_query.bindValue(":LONG_SLOPES", ins.getAngle_y());
64 slopes_query.bindValue(":LONG_SLOPES_PR", ins.getAngle_yp());
65 slopes_query.bindValue(":LAT_SLOPES", ins.getAngle_x());
66 slopes_query.bindValue(":LAT_SLOPES_PR", ins.getAngle_xp());
67 if(!slopes_query.exec()){
68 qDebug()<<"Ошибка вставки в таблицу SLOPES"<<slopes_query.lastError().text();
69 }
70
71
72 QSqlQuery gps_query(dbase);
73 QString gps_create = "CREATE TABLE IF NOT EXISTS GPS (METERS BIGINT NOT NULL,REAL UTC NOT NULL,"
74 " INT SETELLITES NOT NULL, REAL LATITUDE NOT NULL, TEXT NORS, REAL LONGTITUDE NOT NULL, TEXT EORW, REAL SPEED NOT NULL, REAL AZIMUT NOT NULL);";
75 if (!gps_query.exec(gps_create)) {
76 qDebug() << "Ошибка при создании таблицы GPS"<<gps_query.lastError().text();
77 }
78 QString gps_insert = "INSERT INTO GPS (METERS, UTC, SETELLITES, LATITUDE, NORS, LONGTITUDE, EORW, SPEED, AZIMUT)"
79 " values (:METERS, :UTC, :SETELLITES, :LATITUDE, :NORS, :LONGTITUDE, :EORW, :SPEED, :AZIMUT);";
80 gps_query.prepare(gps_insert);
81 gps_query.bindValue(":METERS",meters);
82 gps_query.bindValue(":UTC", rmc.getUTC());
83 gps_query.bindValue(":SETELLITES", gga.getNumber_of_setellites());
84 gps_query.bindValue(":LATITUDE", rmc.getlatitude());
85 gps_query.bindValue(":NORS", rmc.getNorS());
86 gps_query.bindValue(":LONGTITUDE", rmc.getlongtitude());
87 gps_query.bindValue(":EORW", rmc.getEorW());
88 gps_query.bindValue(":SPEED", rmc.getSpeed());
89 gps_query.bindValue(":AZIMUT", rmc.getAzimut());
90 if(!gps_query.exec()){
91 qDebug()<<"Ошибка вставки в таблицу GPS"<<gps_query.lastError().text();
92 }
93
94
95 dbase.close();
96}
97
98void db_manager::add_gnss(GGA gga, RMC rmc,qint32 meters){
99
100
101 dbase.setDatabaseName(path);
102 if (!dbase.open()) {
103 qDebug() << "Ошибка открытия основной базы данных";
104 }
105
106
107 QSqlQuery height_query(dbase);
108 QString height_create = "CREATE TABLE IF NOT EXISTS ADDITINAL_HEIGHT (METERS BIGINT NOT NULL,REAL HEIGHT NOT NULL);";
109 if (!height_query.exec(height_create)) {
110 qDebug() << "Ошибка при создании таблицы height"<<height_query.lastError().text();
111 }
112 QString height_insert = "INSERT INTO ADDITINAL_HEIGHT (METERS, HEIGHT) values (:METERS, :HEIGHT);";
113 height_query.prepare(height_insert);
114 height_query.bindValue(":METERS",meters);
115 height_query.bindValue(":HEIGHT",gga.getAnten_height());
116 if(!height_query.exec()){
117 qDebug()<<"Ошибка вставки в таблицу ADDITINAL_HEIGHT"<<height_query.lastError().text();
118 }
119
120
121 QSqlQuery gps_query(dbase);
122 QString gps_create = "CREATE TABLE IF NOT EXISTS ADDITIONAL_GPS (METERS BIGINT NOT NULL,REAL UTC NOT NULL,"
123 " INT SETELLITES NOT NULL, REAL LATITUDE NOT NULL, TEXT NORS, REAL LONGTITUDE NOT NULL, TEXT EORW, REAL SPEED NOT NULL, REAL AZIMUT NOT NULL);";
124 if (!gps_query.exec(gps_create)) {
125 qDebug() << "Ошибка при создании таблицы gps"<<gps_query.lastError().text();
126 }
127 QString gps_insert = "INSERT INTO ADDITIONAL_GPS (METERS, UTC, SETELLITES, LATITUDE, NORS, LONGTITUDE, EORW, SPEED, AZIMUT)"
128 " values (:METERS, :UTC, :SETELLITES, :LATITUDE, :NORS, :LONGTITUDE, :EORW, :SPEED, :AZIMUT);";
129 gps_query.prepare(gps_insert);
130 gps_query.bindValue(":METERS",meters);
131 gps_query.bindValue(":UTC", rmc.getUTC());
132 gps_query.bindValue(":SETELLITES", gga.getNumber_of_setellites());
133 gps_query.bindValue(":LATITUDE", rmc.getlatitude());
134 gps_query.bindValue(":NORS", rmc.getNorS());
135 gps_query.bindValue(":LONGTITUDE", rmc.getlongtitude());
136 gps_query.bindValue(":EORW", rmc.getEorW());
137 gps_query.bindValue(":SPEED", rmc.getSpeed());
138 gps_query.bindValue(":AZIMUT", rmc.getAzimut());
139 if(!gps_query.exec()){
140 qDebug()<<"Ошибка вставки в таблицу ADDITIONAL_GPS"<<gps_query.lastError().text();
141 }
142
143
144 dbase.close();
145}
146
147void db_manager::close_db_manager()
148{
149 dbase.close();
150 QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());
151}
152
153