[Interest] QtSql database insertion issues...

Tony Rietwyk tony at rightsoft.com.au
Wed Apr 22 09:54:41 CEST 2015


Not all drivers support named bindings.  If it doesn't, then the driver replaces them with positional ? during execute. 

 

Try dumping insertion.boundValues() before calling exec.  

 

Otherwise, I think you'll need to step through in a debug build and set a breakpoint in Qt where the error is raised. 

 

Tony

 

 

From: BRM [mailto:bm_witness at yahoo.com] 
Sent: Wednesday, 22 April 2015 2:12 PM
To: Tony Rietwyk; 'Qt Project'
Subject: Re: [Interest] QtSql database insertion issues...

 

The "prepare(...)" does seem to work.

 

One thing that really confuses me is that even though I use the named bindings, it always lists the bindings as '?' in the error messages.

 

Ben

 

 

On Tuesday, April 21, 2015 11:20 PM, Tony Rietwyk <tony at rightsoft.com.au> wrote:

 

Hi Ben, 

 

Does the prepare work? 

 

I assume the database must be open, or you would get a different message. 

 

Hope that helps, 

 

Tony

 

 

From: interest-bounces+tony=rightsoft.com.au at qt-project.org [mailto:interest-bounces+tony=rightsoft.com.au at qt-project.org] On Behalf Of BRM
Sent: Wednesday, 22 April 2015 12:42 PM
To: Qt Project
Subject: [Interest] QtSql database insertion issues...

 

I've been out of the Qt loop for a little bit; but I'm working to bring myself back up to speed.

I'm presently working on a small project that is basically a GUI equivalent of md5sum/sha1sum where I'm attempting to store the data in a SQLite Database during run-time. I've already done a command-line version using python, and I'm pulling the SQL statements from there. However, I am having trouble with the QSqlQuery prepared statements. The entire code chunk is here:

 <https://github.com/BenjamenMeyer/qtmd5gui/blob/branch_qt4_base/src/hash_db.cpp> 


https://github.com/BenjamenMeyer/qtmd5gui/blob/branch_qt4_base/src/hash_db.cpp

 

I'm building the project on Kubuntu 14.10, using the Qt4.8 libraries provided by the distro.

 

To summarize the code, I'm doing the following:

 

    QSqlQuery insertion(myDb);

    insertion.prepare("INSERT INTO master_directory (hash, path) VALUES(:hash, :path)");

    insertion.bindValue(":hash", "some hash");

    insertion.bindValue(":path", "/some/path");

    if (!insertion.exec()) qDebug() << "insertion failed. Log errors and value bindings";

 

I've added debug output that shows the values being bound; however, it continues to complain about a parameter mismatch.

 

You can see the output here:

https://gist.github.com/BenjamenMeyer/dffe01b702dc8f507c17

 

I've tried binding both by name (preferred) and by order. (I have a C Preprocessor Define to control it); but neither are working.

 

This is my first time really playing with a database via Qt.

What am I doing wrong?

 

TIA,

 

Ben

 

 

_______________________________________________
Interest mailing list
Interest at qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20150422/2e7375b7/attachment.html>


More information about the Interest mailing list