View Full Version : qsqlquery insert error
fantom
23rd February 2011, 14:54
Hello all,
I am new in using qt and i would like some help. Currently i am trying to insert data to an sqlite db and i I get error, any ideas into what I might be doing wrong? The strings come from a Form's LineEdit fields. Please see below the code:
void Register::Register1()
{
QSqlQuery query;
query.prepare("INSERT INTO User (pk, name, psw) "
"VALUES ( :name, :psw)");
query.bindValue( ":name", ui.RUserNameLineEdit->text() );
query.bindValue( ":psw",ui.RPassword->text() );
if( !query.exec() )
qDebug() << "> Query exec() error." << query.lastError().type();
else
qDebug() << ">Query exec() success.";
Thank you !:)
unit
23rd February 2011, 15:09
You should bind pk value
If pk is autoincrement key, use
INSERT INTO User (pk, name, psw) VALUES (NULL, :name, :psw)
fantom
23rd February 2011, 15:48
Hello unit,
Thank you for your response. Actually i removed totally the primary key but i still get the "Query exec () error. 2".
Do you have any idea? Shall i send you more info(code)?
Added after 22 minutes:
Hello unit,
Thank you for your response. Actually i removed totally the primary key but i still get the "Query exec () error. 2".
Do you have any idea? Shall i send you more info(code)?
unit
23rd February 2011, 16:12
2 is SQL statement syntax error (from enum QSqlError::ErrorType).
Try:
QSqlQuery query;
query.prepare("INSERT INTO User (pk, name, psw) "
"VALUES (NULL, :name, :psw)");
query.bindValue( ":name", ui.RUserNameLineEdit->text() );
query.bindValue( ":psw",ui.RPassword->text() );
and also you should use QSqlDatabase for QSqlQuery object
db = QSqlDatabase::addDatabase("QMYSQL", "_default_");
db.setHostName("127.0.0.1");
db.setDatabaseName("testpay");
db.setUserName("mypay");
db.setPassword("test123");
if(db.open())
{
QSqlQuery query(db);
}
fantom
23rd February 2011, 17:15
Thank you again for the response but still i am getting the error. Please find below the main.cpp and the register.cpp file.
main.cpp
#include "disp.h"
#include "login.h"
#include <QtGui/QApplication>
#include <QSqlDatabase>
#include <QSqlDriver>
void initDB()
{
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("d:/database/disp");
bool ok = db.open();
Login w;
w.show();
return a.exec();
}
and register.cpp
#include <QtGui/QWidget>
#include <QSqlQuery>
#include <QString>
#include <QDebug>
#include <QSqlError>
#include "register.h"
Register::Register(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
connect(ui.RegisterOK, SIGNAL( clicked() ), this, SLOT( Register1() ) ) ;
}
Register::~Register()
{
}
void Register::Register1()
{
QSqlQuery query;
query.prepare("INSERT INTO User (name, psw, cpsw, dID) "
"VALUES ( :name, :psw, :cpsw, :dID)");
query.bindValue( ":name", ui.RUserNameLineEdit->text() );
query.bindValue( ":psw",ui.RPassword->text() );
query.bindValue( ":cpsw",ui.ConfirmPassword->text() );
query.bindValue( ":dID",ui.RPatientLineEdit->text() );
if( !query.exec() )
qDebug() << "> Query exec() error." << query.lastError().type();
else
qDebug() << ">Query exec() success.";
}
I really appreciate your patience. I am new in Qt and i am having some troubles :)
Added after 15 minutes:
Thanks Unit i just found the error the query needs to be :
SqlQuery query;
query.prepare("INSERT INTO User VALUES ( :name, :psw, :cpsw, :dID)");
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions Inc. All rights reserved.