[gelöst]Datei richtig anlegen?

Alles rund um die Programmierung mit Qt
Antworten
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

[gelöst]Datei richtig anlegen?

Beitrag 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
Zuletzt geändert von strige am 4. Januar 2010 01:39, insgesamt 1-mal geändert.
phlox81
Beiträge: 97
Registriert: 7. Juli 2009 12:30
Kontaktdaten:

Beitrag von phlox81 »

Versuchs mal mit qApp->applicationDirPath();
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

Beitrag 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.
phlox81
Beiträge: 97
Registriert: 7. Juli 2009 12:30
Kontaktdaten:

Beitrag von phlox81 »

Gib dir doch mal den Pfad dann aus ;)
Evtl. findest du auch noch das richtige in der QApp Doku.
strige
Beiträge: 36
Registriert: 27. Dezember 2009 19:37

[gelöst] Datei richtig anlegen?

Beitrag 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
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag 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.
Gruß, Peter
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag 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:
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Burgpflanze
Beiträge: 89
Registriert: 24. Februar 2006 16:41
Wohnort: Dresden

Beitrag von Burgpflanze »

Ich mach das so:

Code: Alles auswählen

QDir dataDir(QDir::homePath() + "/<APPNAME>");
if (!QDir::exists())
  QDir::mkPath(dataDir.absolutePath());
Gruß, Peter
Antworten