QSqlError(“”, “”, “”)



  • Hi.I want to write SQLite database for my client server program. In the database, server should save every message comes from client. The table have 3 column: client IP, date and message. during debbugging in insertmessage() i get this error: "QSqlError("", "", "") " .
    should i have some code for connecting message that server received or client IP with DB?
    Thanks a lot.

    bool MainWindow::createConnection()
    {
    
    QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");
    
    database.setDatabaseName("Message.dat");
    
       if(!database.open())
       {
           qDebug()<<"can not open database";
    
           database.lastError().text();
    
           return false;
        }
       return true;
    }
    
    MainWindow::messagewindow()
    {
         enum {
              messages_id = 0 ,
              messages_date =1 ,
              messages_HostAddreess = 2,
              messages_message = 3,
              };
    
    
    
          model = new QSqlTableModel(this);
         {
            model->setTable("messages");
            model->setHeaderData(messages_date, Qt::Horizontal, tr("Date"));
            model->setHeaderData(messages_HostAddreess, Qt::Horizontal, tr("From"));
            model->setHeaderData(messages_message, Qt::Horizontal, tr("Message"));
            model->select();
    
         }
    
    
    
         view = new QTableView;
         {
            view->setSelectionMode(QAbstractItemView::SingleSelection);
            view->setSelectionBehavior(QAbstractItemView::SelectRows);
            view->setColumnHidden(messages_id, true);
            view->setModel(model);
            view->resizeColumnsToContents();
            view->setEditTriggers(QAbstractItemView::NoEditTriggers);
    
            QHeaderView *header = view->horizontalHeader();
            header->setStretchLastSection(true);
         }
    
     }
    
     MainWindow::~MainWindow()
     {
      delete ui;
      }
    

      QString HostAddrress;
      QDate currentDate;
      QString message;
    
    bool create =QFile::exists("Message.dat");
    if (!myserver.createConnection())
       return 1;
    
    if (create)
    
       myserver.createdata();
    
       myserver.insertMessage( HostAddrress, currentDate, message);
    
    
    myserver.show();
    
    return a.exec();
    
    }
    

    void MainWindow::createdata()
    {
        QSqlQuery query;
        query.exec("DROP TABLE messages");
        query.exec("CREATE TABLE messages("
                   "id INTEGER PRIMARY KEY AUTOINCREMENT,"
                   "HostAddress varchar(20),"
                   "date varchar(10),"
                   "message varchar(30))");
    }
    
    
    void MainWindow::insertMessage(QString HostAddrress, QDate currentDate, QString message)
    {
        QSqlQuery query;
    
        query.prepare("INSERT INTO messages(HostAddress, date, message) values(?,?,?)");
    
        query.addBindValue(HostAddrress);
        query.addBindValue(currentDate);
        query.addBindValue(message);
        query.exec();
    
        if (query.exec()) {
          // got no error, proceed
          qDebug() << "yes!";
        } else {
          // got an error, deal with it
          qDebug() << query.executedQuery();
          qDebug() << query.lastError();
        }
     }


  • Hello,

    please debug your QDate date value.
    It has been saved as varchar in database but you try to save it with date.
    Write this sentence to get details:

    qDebug() << date;
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.