AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf MySQL

Ein Thema von idefix2 · begonnen am 24. Jul 2010 · letzter Beitrag vom 4. Aug 2010
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Zugriff auf MySQL

  Alt 24. Jul 2010, 14:49
Datenbank: MySQL • Version: 5.1 • Zugriff über: API
In der DP gibt es ein älteres Tutorial von Chewie für den direkten Zugriff auf MySQL ohne Komponenten: http://www.delphipraxis.net/6543-mys...mponenten.html.

Der erste Link in dem Tutorial, von dem man die Pascal-Übersetzungen der MySQL C-Header herunterladen sollte, funktioniert leider nicht mehr.

Kann mir jemand sagen, ob diese Delphi Datei noch irgendwo verfügbar ist (oder eine andere Alternative)?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Zugriff auf MySQL

  Alt 24. Jul 2010, 14:52
Evtl. ist es diese Datei (der durchgestrichene Link im Tutorial): http://www.audio-data.de/mysql.html
Die ist auch für Delphi 2010. Das Projekt scheint also noch gepflegt zu werden.

Wenn es die Datei ist, sag's mir bitte. Dann editiere ich den Link im Tutorial.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

AW: Zugriff auf MySQL

  Alt 24. Jul 2010, 15:12
Jaaaa, der Link ist es.

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Zugriff auf MySQL

  Alt 24. Jul 2010, 15:25
Danke für deine Rückmeldung. Ich habe den Link angepasst.
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 00:47
Hallo Matthias,

Zitat:
Das Projekt scheint also noch gepflegt zu werden.
Na ja, oder so ähnlich.

  function mysql_ssl_set(_mysql: PMYSQL; key, cert, ca, capath: PAnsiChar): longint; stdcall;

Die obige Deklaration ist jedenfalls genauso falsch, wie in der Version, die ich habe.

Da fehlt der Cipher. So ist's richtig:

  function mysql_ssl_set(_mysql: PMYSQL; key, cert, ca, capath, cipher: PAnsiChar): longint; stdcall;


Grüße,
Uwe
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 08:37
Meine Deklaration/Header sind korrekt. (jedenfalls solange verwendeten die Dekumentationen von mysql.com diesbezüglich stimmen)

Nja, hab noch nicht alles verglichen, aber irgendwo gab es auch noch eine Differenz.

Was an dieser Datei aber "gut" ist, daß sie sich versucht an die Lib/DLL anzupassen ... meine Datei(en) ist/sind "fest" auf eine Lib/DLL-Version eingestellt (was ich aber nicht sooo als großen Nachteil seh, denn wenn man für MySQL 5.5 programmiert, wäre es eh nicht so gut, wenn man dann einfach eine 4.0er DLL unterschieben könnte, oder? ).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Aug 2010 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 08:51
Hallo Himitsu,

Zitat von Himitsu:
wäre es eh nicht so gut, wenn man dann einfach eine 4.0er DLL unterschieben könnte, oder?
Jedenfalls nicht, wenn's dann knallt.

Ich finde die mysql.pas auch nicht schlecht aber der Zugriff war by DirectSQL "schöner". Zwei Klassen (TMySQLResult und TMySQLClient) und fertig. Ich habe mir dafür so eine Art Wrapper gebastelt, der den Zugriff wie bei DirectSQL macht aber mysql.pas nutzt.


Grüße,
Uwe
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 09:15
Jedenfalls nicht, wenn's dann knallt.
Wenn dein Programm für 5.0 geschrieben ist (also Queries/Statements dafür verwendet, dann knallt es auch, wenn man ihm eine 4.1-DLL unterschiebt
Die Server sind hoffentlich abwärts kompatibel, so daß man falls dein Programm für 4.1 erstellt wurde dennoch mit einer 4.1-DLL (Client) auf 'nen 5.5er Server zugreifen kann, anstatt deinem Programm auch noch einen 5.5er Clienten unterzuschieben und zu hoffen, daß dieser auch läuft. PS: einige APIs wurden ja geändert und selbst wenn sich diese Unit anpaßt ... sie kennt nur das was sie kennt und es ist somit (aktuell) eh nicht möglich ihr z.B. 'nen 6.0-Clienten unterzuschieben.

Man muß also bei beiden Libs einen passenden Clienten verwenden (nur daß bei mir halt Weniger, bzw. nur Ausgewähltere passen)

Delphi-Quellcode:
TMySQLx = ...;
TMySQL = ^RMySQL;
TMyResult = ^RMyResult;
TMyField = ^RMyField;
TMyRow = ^RMyRow;
TMyRows = ^RMyRows;
TMyStatement = ^RMyStatement;
TMyBinding = ^RMyBinding;
TMyBindBuffer = ^RMyBindBuffer;
Nur 2 "Klassen" gingen bei mir nicht, da ich die Funktionen direkt in die, von ihnen für den Zugriff genutzten, Record integriert hab.

Delphi-Quellcode:
// statt
function mysql_ssl_set(_mysql: PMYSQL; key, cert, ca, capath, cipher: PAnsiChar): longint; stdcall;
                    // ^^^^^^^^^^^^^^^

type
  // so
  TMySQL = ^RMySQL;
  RMySQL = record
    function mysql_ssl_set(key, cert, ca, capath, cipher: PAnsiChar): longint; stdcall;
  end

  // wobei eigentlich ja so
  RMySQL = record
    function mysql_ssl_set(key, cert, ca, capath, cipher: AnsiString): longint; stdcall;
  end;
Txxx ist also eigentlich ein Pxxx und das Rxxx ein Txxx
weiß noch nicht, ob ich das wieder ändere, aber ich dachte mir, daß Txxx (statt Pxxx) mehr an eine Klasse erinnert.
Aber da ich eh noch nicht weiß, was ich mit der Klasse TMySQLx (die statischen Funktionen, welche mal in RMySQL drin waren) mach, könnte es wohl doch so sein, daß ich es noch tausche und die statischen Funktionen wieder in den anderen Record verschiebe.



In deinem Fall sind also auch nur TMySQL, TMyResult und TMyRow, welche du benötigst,
bzw. zusätzlich noch TMyStatement und TMyBinding für die prepared Statements.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Aug 2010 um 09:25 Uhr)
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 09:43
Hallo Himitsu,

kann gut sein, dass mein Wrapper nicht gerade vollständig ist.

In 95% aller Fälle brauche ich sowas:

Delphi-Quellcode:
unit Unit1;

interface

uses
  MySQL;

implementation

procedure Test;
var
  bEx, bUseSSL: Boolean;
  sqlClient : TMySQLClient;
  sqlResult : TMySQLResult;
  sName : String;
  iPort, iNumber : Integer;

begin
  sqlClient := TMysqlClient.Create;
  iPort := 3306;
  bUseSSL := True;
  bEx := sqlClient.connect_db('DB', 'User', 'Passwort', 'Host', iPort, bUseSSL);
  if bEx then
  begin
    sqlResult := sqlClient.query('SELECT * FROM TEST WHERE X > 5', True, bEx);
    if bEx then
    begin
      with sqlResult do
      begin
        First;
        while not Eof do
        begin
          sName := FieldByName('Name').AsString;
          iNumber := FieldByName('Number').AsInteger;
          Next;
        end;
        Free;
      end;
    end;
    sqlClient.disconnect_db;
    sqlClient.Free;
  end;
end;

end.
Das funktioniert soweit und ich muss mich nicht weiter um das ganze "Außenrum" der mysql.pas kümmern.

TMyRow brauche ich nur intern. Nach "außen" sind es wirklich nur 2 Klassen.

Mit FieldByIndex, FieldByName, FieldValueByName konnte ich bisher alle Fälle abdecken.

Mit TMyBinding und TMyStatement habe ich bis jetzt noch nichts gemacht. Wozu ist das? Stored Procedures?


Grüße,
Uwe
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

AW: Zugriff auf MySQL

  Alt 3. Aug 2010, 10:10
drum hatte ich auch mal angefangen zu schauen, was bei dir noch fehlt/falsch ist, aber erstmal wollte ich das Problem finden, warum "beide" Codes nicht immer funktionieren (siehe der "Fehler" am Ende deines Threads).

Im Prinzip ist mein Code nur eine direkte Protierung der Header
(drum ist die MySQLHeader.pas auch nicht großartig aufgeräumt, um die nächsten Änderungen besser erkennen und einpflegen zu können)
und deines quasi schon eine kleine "Komponente" , für einen komfortableren Zugriff.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Aug 2010 um 10:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 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