Seite 1 von 1

QT 4 Visual Studio 2005 und Sqlite

Verfasst: 28. September 2006 20:42
von Frostie
Hallo,

das ist bestimmt ne dumme Frage, hab auch schon überall nachgesehen, aber leider nichts gefunden.

Ich will eine Verbindung zu einer Sqlite Datenbank aufbauen aber es klappt einfach nicht.

Mein Code:

Code: Alles auswählen

#include <qt/qmessagebox.h>
#include <qt/qdialog.h>
#include <qt/QSqlDatabase.h> 
#include <qt/QSqlError.h> 
#include <qt/QSqlQuery.h> 
#include <qt/QSqlTableModel.h> 
#include <qt/QSqlRelationalTableModel.h> 
#include <qt/QSqlRelationalDelegate.h> 
#include <qt/QHeaderView.h> 
#include <qt/QSqlRecord.h>


Dialog::Dialog() : QDialog()
{
// create gui elements defined in the Ui_MainWindow class
setupUi(this);


connect(m_pushButton, SIGNAL(clicked()), this, SLOT(textandern()));
connect(m_pushButton2, SIGNAL(clicked()), this, SLOT(DbConnect()));


}
Dialog::~Dialog()
{
// no need to delete child widgets, QT does it all for us
}


void Dialog::DbConnect() 
{	
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    /*db.setHostName("localhost");
    db.setDatabaseName("test");
    db.setUserName("root");
    db.setPassword("");*/


}
Sogar in dieser minimalversion bekomme ich schon Fehlermeldungen:

Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QSqlDatabase::~QSqlDatabase(void)" (__imp_??1QSqlDatabase@@QAE@XZ)" in Funktion ""protected: void __thiscall Dialog::DbConnect(void)" (?DbConnect@Dialog@@IAEXXZ)".
Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static class QSqlDatabase __cdecl QSqlDatabase::addDatabase(class QString const &,class QString const &)" (__imp_?addDatabase@QSqlDatabase@@SA?AV1@ABVQString@@0@Z)" in Funktion ""protected: void __thiscall Dialog::DbConnect(void)" (?DbConnect@Dialog@@IAEXXZ)".
Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static char * QSqlDatabase::defaultConnection" (__imp_?defaultConnection@QSqlDatabase@@2PADA)".


Muß ich noch was einbinden, z.B. die sqlite3.dll oder so??
Und wenn ja, wie macht man das, in C# mußte ich z.B. für mysql nur
einen Verweis zur dll hinzufügen, hier geht das irgendwie nicht

Danke für die Hilfe

Gruß
Frostie

Verfasst: 28. September 2006 22:32
von Christian81

Verfasst: 29. September 2006 09:10
von Frostie
Tja,

das hab ich ja getan,

aber leider setzt es hier schon aus:

To link against the module, add this line to your qmake .pro file:

QT += sql

Was ist ein .pro file??

Sowas habe ich leider nicht! Wie heißt dieses File unter VS2005??

Danke
Gruß
Frostie

Verfasst: 29. September 2006 09:13
von Christian81
Ich würde sagen - lern erstmal die Grundlagen von Qt:
http://doc.trolltech.com/4.1/qmake-manual.html
http://doc.trolltech.com/4.1/examples.html

Um es einfach zu sagen - die fehlt die qt sql lib, die muss natürlich auch mit gelinkt werden.

Verfasst: 29. September 2006 09:27
von Frostie
Kann mir wenigstens jemand sagen wo das .pro File sein soll?

Unter meinem QT Ordner habe ich nämlich tausende und leider in meinem Projekt keine einzige.

Danke

Verfasst: 29. September 2006 13:05
von isifloh
hi

nach dem du ja unter visual studio 2005 arbeitest geht das ah bisi anders.
falls du die kommerzielle fassung hast und die integration installiert hast einfach mittels das sql qt modul in der projekt eigenschaft hinzufügen.

falls du nicht die komerziele hast kannst du dies auch per hand so machen
projekteigenschaften linker und dort bei den libs die qsql4.lib (ich glaub so heists) eingeben.

mfg

Verfasst: 29. September 2006 21:05
von Frostie
So,

ich hab den Fehler gefunden:

Die QSqld4.lib sollte eingebunden sein, dann geht auch alles.

Verfasst: 29. September 2006 21:10
von Christian81
Sag ich doch die ganze Zeit... :roll: