#include <QtGui/QApplication>
#include <QtGui>
#include <QtSql>
#include <QDebug>
#include "sqlexample1.h"
/* Modify the following to match your environment */
#define DRIVER "QSQLITE" /* see the Qt SQL documentation for a list of available drivers */
#define DATABASE "cdcol" /* the name of your database */
#define USER "root" /* user name with appropriate rights */
#define PASSWORD "" /* password for USER */
#define HOST "localhost" /* host on which the database is running */
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase(DRIVER);
db.setHostName(HOST);
db.setDatabaseName(DATABASE);
db.setUserName(USER);
db.setPassword(PASSWORD);
if (!db.open()) {
QSqlError err = db.lastError ();
QMessageBox::information(0, QObject::tr("Fehler"), err.text());
return 1;
}
QTextEdit edit;
QSqlQuery query;
// Alle Daten abfragen
query.exec("SELECT * FROM cds");
QSqlRecord record = query.record();
while (query.next()) {
QString line =
query.value(record.indexOf("titel")).toString();
line.append(QObject::tr(", "));
edit.append(line);
}
edit.show();
return app.exec();
}
Die Verbindung zur Datenbank klappt wunderbar. Es handelt sich hierbei um die Beispiele aus XAMPP. In der Datentabelle sind 3 Datensätze. QSqlRecord liefert allerdings nichts zurück. Kann mir da jemand helfen?
Ja, war auch nicht wirklich verkehrt, sorry mein Fehler.
Prüfe mal ob es das Feld titel in der DB wirklich gibt oder ob dies eventuell anderster lautet. Alternativ würde ich auch einfach mal die Nummer selbst per Hand in der Value Funktion eintragen.
wenn ich nämlich anstelle von "localhost", "" schreibe, dann klappt die verbindung mit open() trotzdem, aber angezeigt wird auch nichts. muß ich da evtl. was anders machen?
Wird die richtige DB geöffnet?
Gibt mal den kompletten Pfad + Dateiname zur Datenbank in der Funktion setDatabaseName an. Da es sich hier um eine Sqlite Datenbank handelt spielt der hostname meines wissens keine wirkliche Rolle.
Ob die richtige Datenbank geöffnet wird kann ich nicht sagen. Über QSqlDatabase::databaseName bekommt man ja den Namen zurück. Der wäre korrekt.
Das mit dem Pfad und Namen verstehe ich nicht ganz. Soll ich da den Filesystem Pfad eintragen. Wenn ja, dann bekomme ich einen Fehler, dass Qt die Datenbank nicht finden kann.
Ja, trag mal den kompletten Pfad zur DB mit ein.
Bspl. c:\irgendwas\datenbank.db
Allerdings bin ich mir nicht ganz sicher ob du bei Windows ein \\ machen mußt.
gleiches ergebnis. open() liefert zwar keinen fehler zurück, aber angezeigt wird nix. ich denke, da klappt irgendwas nicht. möglicherweise liegt es auch an meiner xampp installation, die sich nicht verträgt mit der VS SQL Express installtion. Ich versuche mal eher den MS SQL Express Server zu verbinden. Vielleicht klappt ja das. Vielen Dank für Deine Hilfe.
Kann das sein das du auf die MySQL DB zugreifen willst und die Daten dort vorhanden sind? Für Sqlite brauchst du nämlich keine XAMPP installation. Momentan greifst du ja auf ne Sqlite DB zu.
Jetzt bin ich ein wenig verwirrt.
QSQLITE erwartet allein ein "setDatabaseName()", welchem du den Dateinamen (!) des db-file gibst. Deine Applikation muss dieses file nur finden.
setHostName usw. sind wirkungs- und nutzlos bei SQLITE, da du da keinen server hast, sondern wie gesagt nur ein db-file.
Ein "define" find ich nicht so gut, da es jedes Vorkommen von "DATABASE" durch "cdcol" ersetzt.
Wenn du das wirklich oben stehen haben willst, ist es besser da nen "static const QString DATABASE("cdcol");" hinzusetzen.
ich bin auch schon den ganzen tag verwirrt . ich weis nämlich nicht genau was ich tue. ich versuch mal zu erklären was ich tun wollte.
als ich habe auf meinem arbeitsrechner Visual C++ laufen + SQL Server Express. Der Dienst läuft auch.
Dann habe ich in besagtem Buch (wo der Code her ist) gelesen, dass der Author für seine Anwendungen eine XAMPP installation empfiehlt. Also dachte ich mir warum net, installiere ich das halt. Und seither komme ich einfach nicht weiter. Ach ja und das ganze ist virtuallisiert. Sprich die ganze IDE und XAMPP läuft auf VMWare (WinXP SP2).
Ich vermute auch ganz stark, dass hier irgendwo der Fehler liegt. Ich wer heute abend nochmal ein bisschen suchen...
Dein VM wird doch sicherlich eine IP haben, oder? Kannst aus der VM heraus diese auch mit loalhost ansprechen?
XAMPP hat nen MySQL-Server. Für ne reine DB ist XAMPP aber voll oversized, das startet weils wurscht ist gleich noch nen Apache, auf dem ein PHP läuft... Brauchst du doch nicht
Für bissi SQL spielen reicht ein SQLITE vollkommen! Einfach Filename angeben, fertig! Ansonsten bracuhst du eindeutig nen anderen SQL-Driver (QMYSQL oder so) Dann sollte das aber funktionieren!
Wenn dein Buch einen XAMPP empfiehlt muss auch drinnen stehen wie du Qt dazu bewegst sich auf den zu connecten! Ansonsten