[dbExpress] Login nicht möglich / Fehlende Treiber
spacer
Autor Nachricht
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 12:15 
Betrifft: dbExpress
Hi,

ich wollte mal unter Xe2 die dbExpress Komponenten mit MySql ausprobieren.
Nachdem ich einige Fehler zu fehlenden Treiber bekommen habe, habe ich mir den MySql Installer for Windows geladen.
Trotzdem kann ich keine Verbindung aufbauen:
ausblenden Quelltext markieren
1:
DBX-Fehler:  Der Treiber konnte nicht korrekt initialisiert werden.  Die Client-Bibliothek könnte fehlen, nicht ordnungsgemäß installiert sein, eine falsche Version haben, oder der Treiber fehlt möglicherweise im Systempfad..


Vorhanden ist nur eine TSQLConnection mit Driver=MySQL.
Ob ich einen Login Versuch starte oder nicht, ich bekomme diesen Fehler.

Fehlen mir Treiber, oder was muss ich noch beachten?

lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 929
Erhaltene Danke: 70


Delphi 2010 Enterprise
BeitragVerfasst: Mo 26.12.11 12:23 
Bei Firebird + DbExpress muss man in der Connection den Pfad zur Clientlibrary angeben. Ich denke mir, dass das bei MySQL auch so sein wird:
ausblenden Delphi-Quelltext markieren
1:
2:
Connection.LibraryName := 'dbxfb4d15.dll';
Connection.VendorLib := 'fbclient.dll';

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 12:53 
Hm, das scheint nicht das Problem zu sein, die Pfade waren ja angegeben.
Allerdings klappt hier überhaupt keine Verbindungsart im Daten-Explorer mit dbExpress.
Habe alle Updates installiert und soweit ich weiß ist doch zb Firebird in jeder Xe2 Version enthalten, oder?
Das ist der Fehler den ich bei Verbindung testen kriege:
ausblenden Quelltext markieren
1:
Borland.Data.TDBXError: DBX-Fehler:  Der Treiber konnte nicht korrekt initialisiert werden.  Die Client-Bibliothek könnte fehlen, nicht ordnungsgemäß installiert sein, eine falsche Version haben, oder der Treiber fehlt möglicherweise im Systempfad.


Hat jemand ne Idee?

lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 26.12.11 20:42 
Bei der Professional hast du MySQL und Interbase zur Verfügung. Bei MySQL erinnere ich mich, dass nur eine bestimmte Version funktioniert. Die aktuelle nicht. Siehe Dokumentation, dort steht die Version 5.1 drin. Die 5.1.54 ging zum Beispiel. Die aktuelle Version 5.5 aber nicht.

Für diesen Beitrag haben gedankt: HenryHux
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 21:15 
Okay, danke für den Tipp, bin weiter gekommen.
Bin sogar soweit, dass er den Verbindungstest erfolgreich besteht, ich weiß nur nicht ganz, was ich da gemacht habe :D
Und zwar habe ich erstmal MySQL 5.1.54 geladen. Damit war der Fehler erstmal weg.
Den Standard-Servernamen "ServerName" wollte er nicht akzeptieren, da habe ich es mit localhost probiert, nimmt er.
Dann akzeptiert er ebenfalls nicht den Datanbanknamen "DBNAME" und auch keinen anderen(die ich getestet habe). Außer "MYSQL".
Dann noch die konfigurierten Login Daten eingetragen, dass es so aussieht:
Verbindungstest (jpg, 50 KB)
Wie gesagt, dann klappt es.
Wieso habe ich noch nicht verstanden, ich werde mal weitermachen und sehen was sich noch tun lässt.

Vielen Dank :)

lg
Einloggen, um Attachments anzusehen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 26.12.11 21:25 
Wie sieht denn deine Datenbankkonfiguration aus? Also deine Datenbanken und Tabellen?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 22:25 
Hmm weiß nicht genau was du meinst..
Ich habe eine komplett neue Verbindung hinzugefügt, erstmal ohne Tabellen oder Sonstiges anzulegen.
Allerdings befinden sich schon einige Tabellen in der Konfiguration, die ich nicht erstellt habe.
Ich denke mal, die werden dann von anderen Anwendungen erstellt worden sein.

lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 26.12.11 22:31 
Ich meine:
user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:
Dann akzeptiert er ebenfalls nicht den Datanbanknamen "DBNAME" und auch keinen anderen(die ich getestet habe).
Bist du denn sicher, dass die Datenbanken so existieren wie du sie versucht hast einzutragen? Ich meine so etwas wie einen verwechselten Tabellen- und Datenbanknamen oder so. ;-)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 22:49 
Ah ok hatte mich vertippt. Mit Delphi habe ich mir die Datenbanken ausgeben lassen, gibt 3 vorhandene, mit denen ich dann auch Verbindungen anlegen kann.
Klappt jetzt also alles, sogar recht einfach, wenn man von Anfang an gewusst hätte, wie :D

Danke,

lg

//Edit

Eine Frage hätte ich noch:
Ist es sicher die dbExpress Komponenten dynamisch bei Bedarf zu erzeugen und freizugeben, oder sollte ich die statisch auf dem Hauptformular verweilen lassen?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 26.12.11 22:56 
Du kannst eine Tabelle auch einfach aus dem Datenbankexplorer auf dein Formular oder Datenmodul ziehen, falls du das noch nicht gemerkt hast. Dann werden die entsprechenden Komponenten automatisch angelegt und initialisiert. ;-)

Ich würde dir zu einem Datenmodul raten um die Verbindungen auszulagern. Das wiederum kannst du dann dynamisch erzeugen.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mo 26.12.11 23:05 
Okay, danke, damit werde ich mal ein bisschen rumexperimentieren.
Was mir noch aufgefallen ist, ist, dass unter 64bit nichts mehr funktioniert.
Gibt es da Lösungen für?

lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Di 27.12.11 00:06 
Für 64-Bit musst du auch die 64-Bit Version von MySQL installiert haben schätze ich. So ist es jedenfalls bei Firebird und das ist ja eigentlich auch logisch.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Di 27.12.11 16:48 
So, habe jetzt zum ersten Mal versucht ein Eintrag zu speichern.
Dabei bin ich auch wieder auf Probleme gestoßen, und zwar folgende :

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
procedure TDatabase.Add(Dir: string);
begin
//Methode 1
with DataModule1.MySQLTable do begin
//Doppelten Pfad Eintrag prüfen
Filtered := false;
Filter := 'Path='+Dir;
Filtered := true;
if FieldByName('Path').AsString = Dir then exit;
Filtered := false;

//Neuen Datensatz erstellen
Append;
FieldByName('Path').AsString := Dir;
Post;
//Im Projekt ist eine Exception der Klasse EDatabaseError mit der Meldung
//'MySQLTable: Diese Operation ist bei einer unidirektionalen
//Datenmenge nicht gestattet' aufgetreten.
end;

//Methode 2
with DataModule1.MySQLQuery do begin
SQL.Text := 'INSERT INTO moviedatabase(ID,PATH) VALUES(:ID,:Dir);';
ParamByName('ID').Value := 0;
ParamByName('Dir').Value := 'Dir';
ExecSQL;
//Im Projekt ist eine Exception der Klasse TDBXError mit der Meldung
//'Der dbExpress-Treiber unterstützt den Datentyp TDBXTypes.UINT8 nicht.
//Fehlermeldung des Herstellers: .' aufgetreten.
end;
end;


Wenn ich da große Umwege gehen muss um Einträge zu schreiben, dann ist die Methode auch nicht wirklich das richtige für mich..
Geht das nicht einfacher?


lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Di 27.12.11 18:10 
Bei dbExpress kannst du nur in eine Richtung durch die Datensätze gehen. Daher brauchst du noch ein TClientDataSet, das die Daten und deren Änderungen zwischenspeichert. Mit ApplyUpdates schreibst du die dann zurück in die Datenbank.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Di 27.12.11 21:02 
Okay, habe ich mal versucht.
Hier mein Konzept bis jetzt, klappt das so?
ausblenden Quelltext markieren
1:
TSqlConnection -> TSqlDataSet -> TDataSetProvider -> TClientDataSet -> TDataSource

Die sind praktisch so in Reihe geschaltet.
Wie mache ich das jetzt richtig, wenn ich etwas schreiben will?
Ich müsste, vorausgesetzt das klappt so, in dem DataSource eine Kopie der MySql Tabelle haben.
Jedoch kann ich dadrin ja nicht mit Sql-commands arbeiten, oder doch?

Ehrlich gesagt bin ich da ein bisschen verwirrt im Moment, was da wovon abhängt..

Edit: Ich habe es geschafft, dass ich mit einem TDBNavigator die DataSource verändern kann, welchen Weg kann ich ohne den Navigator gehen?

lg
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 524
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 28.12.11 16:42 
Hi,

ich habe mal ein Beispiel mit MySql im Anhang, so wie das bei mir im Moment aussieht.
Es klappt alles, aber ich weiß nicht, wie ich Sql Befehle übermittle.
Vielleicht kann sich jemand, bei dem dbexpress funktioniert, das kurz angucken.
Danke :)
Einloggen, um Attachments anzusehen!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 929
Erhaltene Danke: 70


Delphi 2010 Enterprise
BeitragVerfasst: Mi 28.12.11 19:25 
Du musst nur eine TSQLQuery mit der TDatabase verbinden. Der Sqlbefehl kommt ins .CommandText
.Open, wenn er Datensätze zurückliefert.
.Exec, wenn er keine Datensätze zurückliefert.

Um es dann z.B. an ein Grid zu binden, verwende ich immer
TSQLQuery -> TDataSetProvider -> TClientDataset -> TDataSource -> Grid

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home