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 ]