@@ -53,9 +53,20 @@ const CParameterDatabase *CDatabase::GetParameter() const
5353 return m_pPara;
5454}
5555
56+ const QString CDatabase::GetError () const
57+ {
58+ return m_szError;
59+ }
60+
61+ void CDatabase::SetError (const QString &szErr)
62+ {
63+ m_szError = szErr;
64+ }
65+
5666bool CDatabase::OpenDatabase (const CParameterDatabase *pPara,
5767 const QString &szConnectName)
5868{
69+ SetError ();
5970 bool bRet = false ;
6071 if (!pPara) {
6172 bRet = OpenSQLiteDatabase (pPara, szConnectName);
@@ -72,6 +83,8 @@ bool CDatabase::OpenDatabase(const CParameterDatabase *pPara,
7283 bRet = OpenMySqlDatabase (pPara, szConnectName);
7384 else if (pPara->GetType () == " QODBC" )
7485 bRet = OpenODBCDatabase (pPara, szConnectName);
86+ else
87+ SetError (tr (" The database type is unknow:" ) + " " + pPara->GetType ());
7588
7689 QSqlDriver *driver = GetDatabase ().driver ();
7790 if (driver) {
@@ -128,12 +141,13 @@ bool CDatabase::OpenSQLiteDatabase(
128141 // 打开或创建数据库
129142 m_database = QSqlDatabase::addDatabase (" QSQLITE" , m_szConnectName);
130143 m_database.setDatabaseName (databasePath);
131-
144+
132145 if (!m_database.open ()) {
133- qCritical (log) << " Failed to open sqlite database:"
134- << m_database.lastError ().text ()
135- << " connect name:" << m_database.connectionName ()
136- << " database name:" << m_database.databaseName ();
146+ SetError (" Failed to open sqlite database: "
147+ + m_database.lastError ().text ()
148+ + " ; connect name: " + m_database.connectionName ()
149+ + " ; database name: " + m_database.databaseName ());
150+ qCritical (log) << GetError ();
137151 return false ;
138152 }
139153
@@ -170,31 +184,35 @@ bool CDatabase::OpenMySqlDatabase(const CParameterDatabase *pPara,
170184 auto &user = net.m_User ;
171185 m_database.setUserName (user.GetName ());
172186 m_database.setPassword (user.GetPassword ());
173-
187+
174188 if (!m_database.open ()) {
175- qCritical (log) << " Failed to open mysql database:"
176- << m_database.lastError ().text ()
177- << " Host:" << net.GetHost () << " Port:" << net.GetPort ()
178- << " User:" << user.GetUser ()
179- << " connect name:" << m_database.connectionName ()
180- << " database name:" << m_database.databaseName ();
189+ SetError (" Failed to open mysql database: "
190+ + m_database.lastError ().text ()
191+ + " ; Host: " + net.GetHost ()
192+ + " ; Port: " + QString::number (net.GetPort ())
193+ + " ; User: " + user.GetUser ()
194+ + " ; connect name: " + m_database.connectionName ()
195+ + " ; database name: " + m_database.databaseName ());
196+ qCritical (log) << GetError ();
181197 return false ;
182198 }
183199
184200 QSqlQuery query (GetDatabase ());
185201 success = query.exec (" CREATE DATABASE IF NOT EXISTS " + szDbName);
186202 if (!success) {
187- qCritical (log) << " Failed to create" << szDbName << " database:"
188- << query.lastError ().text ()
189- << " Sql:" << query.executedQuery ();
203+ SetError (" Failed to create " + szDbName + " database: "
204+ + query.lastError ().text ()
205+ + " ; Sql: " + query.executedQuery ());
206+ qCritical (log) << GetError ();
190207 return false ;
191208 }
192209
193210 success = query.exec (" use " + szDbName);
194211 if (!success) {
195- qCritical (log) << " Failed to use" << szDbName << " database:"
196- << query.lastError ().text ()
197- << " Sql:" << query.executedQuery ();
212+ SetError (" Failed to use " + szDbName + " database: "
213+ + query.lastError ().text ()
214+ + " ; Sql: " + query.executedQuery ());
215+ qCritical (log) << GetError ();
198216 return false ;
199217 }
200218
@@ -227,29 +245,32 @@ bool CDatabase::OpenODBCDatabase(const CParameterDatabase *pPara,
227245#endif
228246 }
229247 m_database.setDatabaseName (szDbName);
230-
248+
231249 if (!m_database.open ()) {
232- qCritical (log) << " Failed to open odbc database:"
233- << m_database.lastError ().text ()
234- << " connect name:" << m_database.connectionName ()
235- << " database name:" << m_database.databaseName ();
250+ SetError (" Failed to open odbc database: "
251+ + m_database.lastError ().text ()
252+ + " ; connect name: " + m_database.connectionName ()
253+ + " ; database name: " + m_database.databaseName ());
254+ qCritical (log) << GetError ();
236255 return false ;
237256 }
238-
257+
239258 QSqlQuery query (GetDatabase ());
240259 bool success = query.exec (" CREATE DATABASE IF NOT EXISTS " + szDbName);
241260 if (!success) {
242- qCritical (log) << " Failed to create" << szDbName << " database:"
243- << query.lastError ().text ()
244- << " Sql:" << query.executedQuery ();
261+ SetError (" Failed to create " + szDbName + " database: "
262+ + query.lastError ().text ()
263+ + " ; Sql: " + query.executedQuery ());
264+ qCritical (log) << GetError ();
245265 return false ;
246266 }
247267
248268 success = query.exec (" use " + szDbName);
249269 if (!success) {
250- qCritical (log) << " Failed to use" << szDbName << " database:"
251- << query.lastError ().text ()
252- << " Sql:" << query.executedQuery ();
270+ SetError (" Failed to use " + szDbName + " database: "
271+ + query.lastError ().text ()
272+ + " ; Sql: " + query.executedQuery ());
273+ qCritical (log) << GetError ();
253274 return false ;
254275 }
255276
@@ -300,9 +321,11 @@ void CDatabase::CloseDatabase()
300321
301322bool CDatabase::ExportToJsonFile (const QString &szFile)
302323{
324+ SetError ();
303325 QFile file (szFile);
304326 if (!file.open (QIODevice::WriteOnly | QIODevice::Text)) {
305- qCritical (log) << " Failed to open file:" << szFile << file.errorString ();
327+ SetError (" Failed to open export JSON file: " + szFile + " ; " + file.errorString ());
328+ qCritical (log) << GetError ();
306329 return false ;
307330 }
308331
@@ -334,9 +357,11 @@ bool CDatabase::ExportToJsonFile(const QString &szFile)
334357bool CDatabase::ImportFromJsonFile (const QString &szFile)
335358{
336359 bool bRet = false ;
360+ SetError ();
337361 QFile file (szFile);
338362 if (!file.open (QIODevice::ReadOnly | QIODevice::Text)) {
339- qCritical (log) << " Failed to open file:" << szFile << file.errorString ();
363+ SetError (" Failed to open import JSON file: " + szFile + " ; " + file.errorString ());
364+ qCritical (log) << GetError ();
340365 return false ;
341366 }
342367
@@ -347,13 +372,15 @@ bool CDatabase::ImportFromJsonFile(const QString &szFile)
347372 break ;
348373 auto root = doc.object ();
349374 if (root[" Title" ] != " Rabbit Remote Control" ) {
350- qCritical (log) << " The file format is error" ;
375+ SetError (" The file format is error" );
376+ qCritical (log) << GetError ();
351377 break ;
352378 }
353379 QString szVersion = root[" Version" ].toString ();
354380 if (RabbitCommon::CTools::VersionCompare (szVersion, m_MinVersion) < 0 ) {
355- qCritical (log) << " The version is not support:"
356- << szVersion << " <" << m_MinVersion;
381+ SetError (" The version is not support: "
382+ + szVersion + " < " + m_MinVersion);
383+ qCritical (log) << GetError ();
357384 break ;
358385 }
359386 bRet = ImportFromJson (doc.object ());
@@ -403,9 +430,10 @@ bool CDatabaseIcon::OnInitializeSqliteDatabase()
403430 ;
404431 bool success = query.exec (szSql);
405432 if (!success) {
406- qCritical (log) << " Failed to create icon sqlite table:"
407- << m_szTableName << query.lastError ().text ()
408- << " Sql:" << query.executedQuery ();
433+ SetError (" Failed to create icon sqlite table: "
434+ + m_szTableName + " ; error: " + query.lastError ().text ()
435+ + " ; Sql: " + query.executedQuery ());
436+ qCritical (log) << GetError ();
409437 return false ;
410438 }
411439 success = query.exec (" CREATE INDEX IF NOT EXISTS idx_" + m_szTableName + " _name ON " + m_szTableName + " (name)" );
@@ -440,9 +468,10 @@ bool CDatabaseIcon::OnInitializeMySqlDatabase()
440468 ;
441469 bool success = query.exec (szSql);
442470 if (!success) {
443- qCritical (log) << " Failed to create icon mysql table:"
444- << m_szTableName << query.lastError ().text ()
445- << " Sql:" << query.executedQuery ();
471+ SetError (" Failed to create icon mysql table: "
472+ + m_szTableName + " ; " + query.lastError ().text ()
473+ + " ; Sql: " + query.executedQuery ());
474+ qCritical (log) << GetError ();
446475 return false ;
447476 }
448477
@@ -488,8 +517,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
488517 query.bindValue (" :data" , data);
489518 bRet = query.exec ();
490519 if (!bRet) {
491- qCritical (log) << " Failed to insert icon hash:"
492- << szHash << query.lastError ().text ();
520+ SetError (" Failed to insert icon hash: "
521+ + szHash + " ; " + query.lastError ().text ());
522+ qCritical (log) << GetError ();
493523 return 0 ;
494524 }
495525 return query.lastInsertId ().toInt ();
@@ -501,8 +531,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
501531 query.bindValue (" :name" , szName);
502532 bRet = query.exec ();
503533 if (!bRet) {
504- qCritical (log) << " Failed to select icon name:"
505- << szName << query.lastError ().text ();
534+ SetError (" Failed to select icon name: "
535+ + szName + " ; " + query.lastError ().text ());
536+ qCritical (log) << GetError ();
506537 return 0 ;
507538 }
508539 if (query.next ()) {
@@ -515,8 +546,9 @@ int CDatabaseIcon::GetIcon(const QIcon &icon)
515546 query.bindValue (" :name" , szName);
516547 bRet = query.exec ();
517548 if (!bRet) {
518- qCritical (log) << " Failed to insert icon name:"
519- << szName << query.lastError ().text ();
549+ SetError (" Failed to insert icon name: "
550+ + szName + " ; " + query.lastError ().text ());
551+ qCritical (log) << GetError ();
520552 return 0 ;
521553 }
522554 return query.lastInsertId ().toInt ();
@@ -533,8 +565,9 @@ QIcon CDatabaseIcon::GetIcon(int id)
533565 query.bindValue (" :id" , id);
534566 bool bRet = query.exec ();
535567 if (!bRet) {
536- qCritical (log) << " Failed to get icon id:"
537- << id << query.lastError ().text ();
568+ SetError (" Failed to get icon id: "
569+ + QString::number (id) + " ; " + query.lastError ().text ());
570+ qCritical (log) << GetError ();
538571 return icon;
539572 }
540573
0 commit comments