ich bräuchte dringends Hilfe. Ich habe hier eine Sqlite3 Datenbank mit QT aufgesetzt. Läuft soweit auch einwandfrei, bis zu dem Punkt wo ich alle Tabellen aus der Datenbank löschen möchte. Jedesmal kommt der Fehler "Database is locked"...Ich habe die Befehle ca. 100 mal überprüft und SQLite Admin ausprobiert (1:1 aus der Debug-Variable rauskopiert). Funktionieren einwandfrei! Aber irgendwie ist die Datenbank immer gelocked. Weiß nicht mehr was ich noch machen soll. Es geschehen auch defintiv keine anderen Zugriffe auf die DB während ich versuche sie zu löschen. Selects, Inserts und Updates funktionieren einwandfrei an dieser Stelle...nur eben nicht DROP TABLE.
Code: Alles auswählen
bool MEERP::eraseDatabase()
{
loginToDatabase();
QString findTables = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;";
if(m_query->exec(findTables))
{
QStringList tables;
while(m_query->next())
{
tables << m_query->value(0).toString();
}
m_query->finish();
for (int i=0;i<tables.size();i++)
{
QString dropTable = QString("DROP TABLE %1").arg(tables[i]);
if(!m_query->exec(dropTable));
{
queryError("Tabelle löschen");
return false;
}
}
}
else
return false;
return true;
}
void MEERP::loginToDatabase()
{
m_db.close();
QSqlDatabase::removeDatabase("QSQLITE");
m_db = QSqlDatabase::addDatabase("QSQLITE");
m_db.setDatabaseName("data.s3db");
m_db.setUserName("admin");
m_db.setPassword("password");
if(!m_db.open())
{
QMessageBox::warning(this, appTitle,tr("Die Datenbank konnte nicht geöffnet werden!"),QMessageBox::Ok);
QApplication::quit();
return;
}
m_query = new QSqlQuery(m_db);
}
DANKE
Gruss
Groove