Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem mit dem Zugriff auf die Datenbank (https://www.delphipraxis.net/84540-problem-mit-dem-zugriff-auf-die-datenbank.html)

TUX_der_Pinguin 18. Jan 2007 10:12

Datenbank: MySQL • Version: 5.0 • Zugriff über: dbExpress

Problem mit dem Zugriff auf die Datenbank
 
Hallo,

ich habe mir die kostenlose Version von Turbo Delphi installiert und wollte nun einmal probieren wie man damit auf eine
MySQL Datenbank zugreifen kann. Dafür habe ich die Komponente TSQLConnection (dbExpress) Verwendet, die Verbindung wird
im OnCreate des Formulars auf und im OnClose wieder abgebaut. Starte ich das Programm zeigt mir das MySQL Admin Tool an
das eine Weitere Verbindung besteht, daher gehe ich davon aus das die Verbindung klappt.

Jedoch mein Problem wie bekomme ich die Daten aus der Datenbank herraus, dazu habe ich gesehen das sich zwei möglichkeiten
bieten TSQLQuery und TSQLDataSet, jedoch weiß ich nicht wofür was ist und wie genau man die komponenten Verwenden muß.

Hatte es wie folgt probiert bekomme jedoch Zugriffsverletztungen
Delphi-Quellcode:
Var
  query : TSQLQuery;

Begin
  query            := TSQLQuery.Create(Self);
  query.Connection := SQLConnection;
  query.SQL.ADD('SELECT * From Kunde');
  query.open;
  query.close;
  query.free;
Also wäre es möglich mal ein einfaches Beispiel für TSQLQuery und TSQLDataSet zu bekommen, ich habe nirgendwo ein Tutorial
gefunden oder Beispiele.

Ich weiß auch das dbExpress von Delphi 2006 / Turbo Delphi probleme hat mit MySQL > 4.0. Da aber die Verbindung besteht,
dachte ich das der rest auch funktioniert.

mfg

TUX

mkinzler 18. Jan 2007 11:04

Re: Problem mit dem Zugriff auf die Datenbank
 
http://www.dsdt.info/tutorials/?cat=6
Delphi-Quellcode:
  query            := TSQLQuery.Create(Self);
  query.Connection := SQLConnection;
  query.SQL.Text := 'SELECT * From Kunde';
  query.open;
  // Mach was mit Daten
  query.close;
  query.free;

TUX_der_Pinguin 18. Jan 2007 11:20

Re: Problem mit dem Zugriff auf die Datenbank
 
Zitat:

Zitat von mkinzler
http://www.dsdt.info/tutorials/?cat=6

Also die Seite hatte ich auch gefunden, da steht aber nix über dbExpress. :|

mkinzler 18. Jan 2007 11:39

Re: Problem mit dem Zugriff auf die Datenbank
 
Aber Alle Komponeneten die das Datenhandling von Delphi verwenden arbeiten gleich bis ähnlich. Es ist also egal ob TQuery oder TSQLQuery verwendet wird.

TUX_der_Pinguin 18. Jan 2007 13:27

Re: Problem mit dem Zugriff auf die Datenbank
 
Ich habe das noch mal ausprobiert und ich bekomme immer eine Zugriffsverletztung in der dbxmys30.dll

mkinzler 18. Jan 2007 13:49

Re: Problem mit dem Zugriff auf die Datenbank
 
Wie lautet der Code, der den Fehler verursacht?

TUX_der_Pinguin 18. Jan 2007 14:02

Re: Problem mit dem Zugriff auf die Datenbank
 
Zitat:

Zitat von mkinzler
Wie lautet der Code, der den Fehler verursacht?

Der Code ist der wie oben bereits erwähnnt

Delphi-Quellcode:
  query           := TSQLQuery.Create(Self);
  query.Connection := SQLConnection;
  query.SQL.Text := 'SELECT * From Kunde';
  query.open;

  query.close;
  query.free;

mikhal 18. Jan 2007 14:44

Re: Problem mit dem Zugriff auf die Datenbank
 
Zwei Dinge:
1. Wie sieht der Text deiner SQLConnection aus?
2. In welcher Zeile wird der Fehler ausgelöst? dazu die Zeile
Delphi-Quellcode:
query           := TSQLQuery.Create(Self);
markieren, einen Breakpoint auf diese Zeile mit Taste F5 setzen, das Programm mit F9 starten, der Debugger sollte dann in der markierten Zeile stehen bleiben, dann mit F8 Code-Zeile für Code-Zeile durchsteppen bis du eine Fehlermeldung erhältst. Die Zeile, die du gerade verlassen wolltest, wird dann die fehlerhafte Code-Zeile sein!

Grüße
Mikhal

[edit]Deutsche Sprache schwere Sprache...[/edit]

TUX_der_Pinguin 19. Jan 2007 07:29

Re: Problem mit dem Zugriff auf die Datenbank
 
Die SQLConnection habe ich via Komponente realisiert und vor der Abfrage ein SQLConnection.Open ausgeführt,
wie bereits erwähnt zeigt mir das Tool MySQL Admin an, das eine Verbindung besteht daher denke ich das
das soweit geklappt hat, sonst wäre dort doch bereits ein fehler aufgetreten.

Die Zugriffsverletztung tritt bei query.open auf.

TUX_der_Pinguin 19. Jan 2007 13:05

Re: Problem mit dem Zugriff auf die Datenbank
 
Ich habe das ganze noch mal wie folgt ausprobiert es ändert sich aber nichts, die Verbindung klappt die Abfrage nicht.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SQLConnection : TSQLConnection;
  SQLQuery     : TSQLQuery;

begin
  SQLConnection                                    := TSQLConnection.Create(Self);
  SQLConnection.ConnectionName                     := 'SQLCon';
  SQLConnection.DriverName                         := 'MYSQL';
  SQLConnection.GetDriverFunc                      := 'getSQLDriverMYSQL';
  SQLConnection.LibraryName                        := 'dbxmys30.dll';
  SQLConnection.VendorLib                          := 'LIBMYSQL.dll';

  SQLConnection.Params.Values['BlobSize']          := '-1';
  SQLConnection.Params.Values['Database']          := 'Kunden';
  SQLConnection.Params.Values['ErrorRessourceFile'] := '';
  SQLConnection.Params.Values['HostName']          := 'localhost';
  SQLConnection.Params.Values['LocaleCode']        := '0000';
  SQLConnection.Params.Values['User_Name']         := 'root';
  SQLConnection.Params.Values['Password']          := 'pwd';
  SQLConnection.Params.Values['Compressed']        := 'False';
  SQLConnection.Params.Values['Encrypted']         := 'False';

  SQLConnection.LoginPrompt                        := False;
  SQLConnection.ParamsLoaded                       := True;
  SQLConnection.KeepConnection                     := True;
  SQLConnection.Connected                          := True;

  SQLConnection.Open;
  Memo1.Lines.Add('Verbindung hergestellt ...!');


  SQLQuery              := TSQLQuery.Create(Self);
  SQLQuery.SQLConnection := SQLConnection;
  SQLQuery.SQL.Text     := 'Select * from Kunde';
  SQLQuery.Active       := True;



  SQLConnection.Close;
  SQLConnection.Free;
  Memo1.Lines.Add('Verbindung beendet ...!');

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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