QSqlError(“”, “”, “”)
Unsolved
General and Desktop
-
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;