PDA

View Full Version : SQL Insert using ODBC ?



allensr
26th July 2007, 00:25
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 this:

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 ""

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

TIA