Angenommen, ich möchte eine Verbindung zu SQLite3-Datenbank in Qt zu öffnen. Es wird mit einer existierenden Datenbank verbunden dbName
.Wie überprüft man, ob Datei mit Datenbanktreiber in Qt
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
Jetzt brauche ich db.setDatabaseName(dbName)
zu setzen, wo dbName
durch eine QFileDialog
empfangen wird.
Solange jedoch dbName
ein gültiger Dateiname ist, ist db.open()
immer true
. Gibt es trotzdem zu überprüfen, ob die Datei dbName
eine SQLite3-Datenbank ist, aber nicht von einem anderen Typ? Was kann ich tun, ist jetzt eine Abfrage ausführen und prüfen, ob Fehler wie:
db.setDatabaseName(dbName);
if (db.open()) {
QSqlQuery qr(db);
if (!qr.exec(".database;")) {
qDebug() << qr.lastError().text();
return false;
}
}
aber es wird nicht funktionieren, wenn die Datei leer ist.
Was ist der Zweck Ihrer Anwendung? Soll es * irgendeine * SQLite-Datenbank öffnen können, oder wollen Sie nur auf die eigenen Anwendungsdateien zugreifen? –
es soll in der Lage sein, jede SQLite-Datenbank zu öffnen, Daten zu lesen, kann der Benutzer ändern und speichern – scmg