Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver) (https://www.delphipraxis.net/26331-problem-mit-mysql-verbindung-mysql-odbc-3-51-driver.html)

mirko2000 22. Jul 2004 08:26


Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Hallo!

Ich versuche gerade auf die MySQL-Datenbank (Version 4.20d) mit dem ODBC Treiber (MySQL ODBC 3.51 Driver) zuzugreifen.

Kann mir jemand sagen, warum keine Daten angezeigt werden können? Die Attributnamen werden ausgegeben es werden nur keine Daten ausgegeben obwohl 3 Datensätze in der Tabelle vorhanden sind!?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  con : Connection;
  rst : Recordset;
  fld : Field;
  r, x, y, i : Integer;
begin
  con := CoConnection.Create;
  rst := CoRecordset.Create;

  con.Open('bl', 'BENUTZER', 'PASSWORT', -1);

  rst.Open('SELECT * FROM abteilung', con, adOpenStatic, adLockOptimistic, adCmdText);

  x := rst.Fields.Count-1;
  y := rst.RecordCount;

  StringGrid1.ColCount := x+1;
  StringGrid1.RowCount := y+1;

  For i := 0 to x do
  begin
    StringGrid1.Cells[i, 0] := rst.fields[i].Name;
  end;

  r := 1;
  rst.MoveFirst;

  while not rst.EOF do
  begin
    For i := 0 to x do
    begin
      fld := rst.Fields[i];
      StringGrid1.Cells[i, r] := fld.Value;
    end;

    r := r + 1;
    rst.MoveNext;
  end;

  rst.Close;
  rst := nil;
  con.Close;
  con := nil;
end;

Bernhard Geyer 22. Jul 2004 08:46

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Ich denke mal die Infos unter Programs Known to Work with MyODBC sollte dir helfen. Dort werden die nötigen Schalter beschrieben, die du in deinem ODBC-Eintrag setzen mußt.

Einfacher gehts mit native-Komponenten wie MyDAC. Kosten zwar ein paar €, dafür benötigst Du kein ADO, ODBC oder BDE.

mirko2000 22. Jul 2004 10:36

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Gibt es sonst keine andere Lösung?

Sollte doch eigentlich auch mit ADO funktionieren, oder?

Stevie 22. Jul 2004 10:41

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
ADO und MySQL ist nicht so toll, weil man nicht sicher sein kann, dass auch die ODBC-Treiber auf dem Rechner sind.
Nimm lieber die Zeos-Komponenten. Dann brauchst du bloß die libmysql.dll mitliefern und gut ist!

Bernhard Geyer 22. Jul 2004 12:32

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Für ADO mußt Du auf der "Programs Known to Work with MyODBC" den Abschnitt für ADO durchlesen. Dort mußt Du ein paar ander Schalter setzen.

Memo 22. Jul 2004 12:45

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Zitat:

Zitat von Bernhard Geyer
Für ADO mußt Du auf der "Programs Known to Work with MyODBC" den Abschnitt für ADO durchlesen. Dort mußt Du ein paar ander Schalter setzen.

Ich glaube nicht das dort das Problem liegt?
Code:
y := rst.RecordCount;
schau mal im Debug-Mode ob du einen Wert >-1 erreichst, sonst kann dein Stringgrid nicht auf die Recordanzahl reagieren. setze es mal manuell auf die Anzahl der zu erwartenden Datensätze.
Außerdem wird dir ein evt. auftretendes Leerfeld Probleme bereiten. Es verursacht einen Fehler nichts zuzuweisen.

mirko2000 22. Jul 2004 12:49

Re: Problem mit MySQL-Verbindung (MySQL ODBC 3.51 Driver)
 
Hab es jetzt herausgefunden warum es nicht funktioniert hat. Es hat die Zeile

Delphi-Quellcode:
rst.CursorLocation:=adUseClientBatch;
gefehlt. Ohne diese Zeile bringt RecordCount immer -1 raus. Mit der Zeile funktioniert es!


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz