src/sql/drivers/tds/qsql_tds.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
   162 typedef QHash<DBPROCESS *, QTDSResultPrivate *> QTDSErrorHash;
   162 typedef QHash<DBPROCESS *, QTDSResultPrivate *> QTDSErrorHash;
   163 Q_GLOBAL_STATIC(QTDSErrorHash, errs)
   163 Q_GLOBAL_STATIC(QTDSErrorHash, errs)
   164 
   164 
   165 extern "C" {
   165 extern "C" {
   166 static int CS_PUBLIC qTdsMsgHandler (DBPROCESS* dbproc,
   166 static int CS_PUBLIC qTdsMsgHandler (DBPROCESS* dbproc,
   167                             DBINT /*msgno*/,
   167                             DBINT msgno,
   168                             int msgstate,
   168                             int msgstate,
   169                             int severity,
   169                             int severity,
   170                             char* msgtext,
   170                             char* msgtext,
   171                             char* /*srvname*/,
   171                             char* srvname,
   172                             char* /*procname*/,
   172                             char* /*procname*/,
   173                             int /*line*/)
   173                             int line)
   174 {
   174 {
   175     QTDSResultPrivate* p = errs()->value(dbproc);
   175     QTDSResultPrivate* p = errs()->value(dbproc);
   176 
   176 
   177     if (!p) {
   177     if (!p) {
   178 //        ### umm... temporary disabled since this throws a lot of warnings...
   178 //        ### umm... temporary disabled since this throws a lot of warnings...
   179 //        qWarning("QTDSDriver warning (%d): [%s] from server [%s]", msgstate, msgtext, srvname);
   179 //        qWarning("QTDSDriver warning (%d): [%s] from server [%s]", msgstate, msgtext, srvname);
   180         return INT_CANCEL;
   180         return INT_CANCEL;
   181     }
   181     }
   182 
   182 
   183     if (severity > 0) {
   183     if (severity > 0) {
   184         QString errMsg = QString::fromLatin1("%1 (%2)").arg(QString::fromAscii(msgtext)).arg(
   184         QString errMsg = QString::fromLatin1("%1 (Msg %2, Level %3, State %4, Server %5, Line %6)")
   185                                     msgstate);
   185                          .arg(QString::fromAscii(msgtext))
       
   186                          .arg(msgno)
       
   187                          .arg(severity)
       
   188                          .arg(msgstate)
       
   189                          .arg(QString::fromAscii(srvname))
       
   190                          .arg(line);
   186         p->addErrorMsg(errMsg);
   191         p->addErrorMsg(errMsg);
       
   192         if (severity > 10) {
       
   193             // Severe messages are really errors in the sense of lastError
       
   194             errMsg = p->getErrorMsgs();
       
   195             p->lastError = qMakeError(errMsg, QSqlError::UnknownError, msgno);
       
   196             p->clearErrorMsgs();
       
   197         }
   187     }
   198     }
   188 
   199 
   189     return INT_CANCEL;
   200     return INT_CANCEL;
   190 }
   201 }
   191 
   202