Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date
All threads index page 6

Qt-interest Archive, July 2007
MS Access ODBC Insert problem (UNCLASSIFIED)


Message 1 in thread

Classification:  UNCLASSIFIED 
Caveats: NONE

Using Qt 4.1.4 on WinXP pro

I have a MS Access 2003 database that I can hook into and query for
results (ie SELECT column FROM table ...) and navigate the results.
However, I am not able to insert anything programatically. I can if I go
into the table via the MS Access GUI. The thing that is causing me
concern is if I use the QSqlDriver::sqlStatement and return back all of
the different statements, it only gives me statements for Select, where,
and delete, but not for insert or update:

QSqlQuery query;   
QSqlDriver const * driver = query.driver();   
QSqlRecord rec = driver->record("testTbl");   
QString insertStatement =
driver->sqlStatement(QSqlDriver::InsertStatement,"testTbl",rec,true);   
QString selectStatement =
driver->sqlStatement(QSqlDriver::SelectStatement,"testTbl",rec,true);   
QString updateStatement =
driver->sqlStatement(QSqlDriver::UpdateStatement,"testTbl",rec,true);  
QString deleteStatement =
driver->sqlStatement(QSqlDriver::DeleteStatement,"testTbl",rec,true);  
QString whereStatement  =
driver->sqlStatement(QSqlDriver::WhereStatement,"testTbl",rec,true);    
qDebug() << " Insertstatement " << insertStatement << endl;  
qDebug() << " Selectstatement " << selectStatement << endl;   
qDebug() << " Updatestatement " << updateStatement << endl;   
qDebug() << " Deletestatement " << deleteStatement << endl;   
qDebug() << " Wheretstatement " << whereStatement << endl; 

This code returns:

>> Insertstatement ""
>> Selectstatement "SELECT RecNum, UniqueID FROM testTbl"
>> Updatestatement ""
>> Deletestatement "DELETE FROM testTbl"
>> Wheretstatement "WHERE RecNum = ? AND UniqueID = ?"

If I try to do it writing my own SQL insert statement, it "executes" but
nothing goes into the table. I added the call to query.exeutedquery()
and it returns an empty string.  


if(!query.exec("INSERT INTO testTbl VALUES (10,20)"))   
{      
   qDebug() << query.lastError().text();      
   return false;   
}    
QString executedQuery(query.executedQuery());   
qDebug() << "executed query  " << executedQuery << endl; 

>> executed query ""

I've also tried positional binding to no avail.  Do I need to upgrade
QT?

Can anyone tell what Im missing? It's probably obvious... except to me.

TIA
Classification:  UNCLASSIFIED 
Caveats: NONE

--
 [ signature omitted ]