Seite 1 von 1

[gelöst]Datei richtig anlegen?

Verfasst: 3. Januar 2010 16:41
von strige
Moin zusammen;)

Ich denke ich habe eigentlich ne ganz simple Frage. Ich habe mich demletzt in Qt4 mit einem Buch eingearbeitet und habe soeben mein erstest Projekt fast fertig.
Nun, wenn Das Programm sein ersten Start hat, soll es eine SQLITE datei erstellen. das mache ich mit diesem Code:

Code: Alles auswählen

QSqlDatabase creatDB = QSqlDatabase::addDatabase("QSQLITE");
        creatDB.setDatabaseName("db.sqlite");
        if (! creatDB.open()){
            qDebug() << creatDB.lastError().text();
        }else{
            qDebug() << "erfolgreich erstellt"
};
Das Problem ist nun, wenn ich mein Programm vom Desktop aus starte, erstellt er eine neue Datenbank aufm Desktop, vom Startmenü aus im Startmenü. Wie muss ich den Code ändern, damit das Programm die Datei nur in dem Ordner erstellt, wo die "Hauptexe"liegt und die Verknüpfungen aufm Desktop, und Startmenü drauf zugreifen können?

Danke euch schonmal für eure Antworten
vlg

Verfasst: 3. Januar 2010 16:51
von phlox81
Versuchs mal mit qApp->applicationDirPath();

Verfasst: 3. Januar 2010 18:12
von strige
Danke Dir erstmal für deine Antwort. Leider funktioniert das auch nicht. evtl hab ich es auch falsch angewendet:

Code: Alles auswählen

creatDB.setDatabaseName(qApp->applicationDirPath()+"\\db.sqlite");
Das Problem ist imemrnoch das selbe, wenn ich die Verknüpfung aufm Desktop starte legt er die db.sqlite auch aufm Desktop an.

Verfasst: 3. Januar 2010 18:36
von phlox81
Gib dir doch mal den Pfad dann aus ;)
Evtl. findest du auch noch das richtige in der QApp Doku.

[gelöst] Datei richtig anlegen?

Verfasst: 3. Januar 2010 19:41
von strige
Es hat geklappt ;)

Code: Alles auswählen

qApp->applicationDirPath()+"/db.sqlite";(
Hatte nur vergessen, das ich dies 2mal ändern muss

:roll:

Danke Dir
vlg

Verfasst: 4. Januar 2010 11:11
von Burgpflanze
Ist aber mit qApp->applicationDirPath() nicht gut für Multi-User-Umgebungen geeignet.
Besser im User-Home ein Unterverzeichnis anlegen und dort die Datenbank speichern.

Verfasst: 4. Januar 2010 11:18
von 24dan
Genau!
So z.B.

Code: Alles auswählen

QDir dummy;
if(!dummy.exists("db") dummy.mkdir("db");
QSqlDatabase creatDB = QSqlDatabase::addDatabase("db/QSQLITE"); 

your rest stuff...
:wink:

Verfasst: 4. Januar 2010 12:30
von Burgpflanze
Ich mach das so:

Code: Alles auswählen

QDir dataDir(QDir::homePath() + "/<APPNAME>");
if (!QDir::exists())
  QDir::mkPath(dataDir.absolutePath());