Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   MySQL mit Delphi (https://www.delphipraxis.net/102109-mysql-mit-delphi.html)

Luckie 23. Okt 2007 16:02


MySQL mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 2)
MySQL mit Delphi
MySQL-Datenbanken mit Delphi ohne Fremdkomponenten

Homepage: http://delphitutorials.michael-puff.de

calculon 23. Okt 2007 17:27

Re: MySQL mit Delphi
 
Hi,

erstma' super geschrieben. Werd' ich am Wochenende alles mal ausprobieren, da ich schon lange nach einer Möglichkeit gesucht habe mit einer Personal-Version mit Datenbanken zu arbeiten. Was ich'n bißchen blöd finde ist, dass der Text in der pdf-Datei so schwache Konturen hat (oder ist das gräulich?), so dass es etwas schwer zu lesen ist und ich stark reinzoomen muss.

Gruß

Calculon
--

Die Muhkuh 23. Okt 2007 17:28

Re: MySQL mit Delphi
 
Hi,

das stimmt. Die eingestellte Schrift ist nicht so toll, sieht aus, als wäre sie ein bisschen transparent.

Voider 23. Okt 2007 17:33

Re: MySQL mit Delphi
 
tja .. mal sehen ob's geht :???:

MrKnogge 23. Okt 2007 17:38

Re: MySQL mit Delphi
 
Moin Michael,

ich habe es gerade grob überflogen und werde es auf jedenfall mal Schritt für Schritt durchgehen. Wie es der Zufall so will, arbeite ich derzeit an einem Programm welches auf eine Online-MySQL-Datenbank zugreift. Bisher habe ich nur das Tutorial von dsdt.info.

Was mir vorab aufgefallen ist, und mir sehr gut gefällt, ist das du auch eine Einleitung in die Betriebname des Servers selbst gibst.

Was die Schrift angeht, so schließe ich mich meinen Vorrednern an. Ist das grau gewollt, oder ein effekt der PDF-Druckers ?

Viele Grüße
Christian

Luckie 23. Okt 2007 18:10

Re: MySQL mit Delphi
 
Es ist die Standard-Latex-Schrift, die voreingestellt ist. Im Druck sieht sie sauber aus. Allerdings mus sich euch Recht geben, hier zu Hause mit dem TFT-Monitor sieht sie etwas transparent aus. Im Büro mit dem Röhrenmonitor sah sie besser aus.

matashen 13. Nov 2007 13:48

Re: MySQL mit Delphi
 
Hallo zusammen,

Ich hätte da als absoluter Datenbankneuling eine Frage.

Läßt sich mit den beschriebenen Mitteln auch ein Bild in die Datenbank stecken(jpg). Ein Hinweis dazu fehlt in dienem Skript und das wäre für mich sehr wichtig.
Muß mich Arbeitstechnisch in Datenbanken einarbeiten und sollte wenn möglich auch Bilder mit rein packen.


Gruß Matthias

Luckie 13. Nov 2007 13:52

Re: MySQL mit Delphi
 
MySQL müsste dazu auch den passenden Datentyp kennen. Allerdings sollte man es vermeiden Bilder direkt in der Datenbank zu speichern, da sie so sehr schnell sehr groß wird und die Performance darunter sehr leidet. Am besten nur den Pfad abspeichern.

matashen 13. Nov 2007 13:58

Re: MySQL mit Delphi
 
Hallo Lucky,

Danke für die schnelle Antwort,

Also folgendes Problem:
Wir sollen umsetzen: Papierlose Abteilung/Fertigung

Dazu sollen die derzeitigen Datenblätter (~1700Stück) in eine Datenbank. Bei jedem Datenblatt ist auch ein Bildchen. Momentan liegt alles auf einem Netzlaufwerk als Worddokumente und die Bilder werden da auch abgelegt wo das jeweilige Datenblatt ist. Nachdem ich garantieren muss das auch das richtige Bild mit aufgerufen wird kommt ein Link alleine nicht in Frage, da ich sonst ja bei geändertem Link nicht sicherstellen kann das richtige Bild zu finden.

Das es keinen Sinn macht alle 1700 Dokumente wie bisher in einzeldokumente zu fassen ist klar, sonst könnte man es auch lassen wies jetzt ist. Aber die Bilder sollten halt auch zentral abgelegt und per Kennung abrufbar sein. Gibts alternativen ?

Gruß Matthias

Bernhard Geyer 13. Nov 2007 14:10

Re: MySQL mit Delphi
 
Zitat:

Zitat von matashen
Also folgendes Problem:
Wir sollen umsetzen: Papierlose Abteilung/Fertigung

Dazu sollen die derzeitigen Datenblätter (~1700Stück) in eine Datenbank. Bei jedem Datenblatt ist auch ein Bildchen. Momentan liegt alles auf einem Netzlaufwerk als Worddokumente und die Bilder werden da auch abgelegt wo das jeweilige Datenblatt ist. Nachdem ich garantieren muss das auch das richtige Bild mit aufgerufen wird kommt ein Link alleine nicht in Frage, da ich sonst ja bei geändertem Link nicht sicherstellen kann das richtige Bild zu finden.

Das es keinen Sinn macht alle 1700 Dokumente wie bisher in einzeldokumente zu fassen ist klar, sonst könnte man es auch lassen wies jetzt ist. Aber die Bilder sollten halt auch zentral abgelegt und per Kennung abrufbar sein. Gibts alternativen ?

Gruß Matthias

Wenn du mehr wissen willst bzw. darüber diskutieren willst solltest du einen eigenen Thread eröffnen.
Falls du auch fertige SW einsetzen kannst die auch einiges kosten dürfen und es sich um die Datenblätter um Stücklisten von Baugruppen handelt: Da gibts schon was fertiges.

Kuster Peter 13. Nov 2007 15:29

Re: MySQL mit Delphi
 
Kompliment und Frage

Also als erstes ein Kompliment. Habe es kurz angesehen und gleich geschnallt wie man Sucht und Filtert in der DB. So müssen Tutorials sein.

Frage: Funktioniert das auch mit Firebird?

Vielen Dank für die Antwort.

Peter

Thorben_Ko 14. Nov 2007 15:51

Re: MySQL mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich bin grade dabei mich in Datenbanken einzuarbeiten.

Auf grund deines Turoirals habe ich mir MySQL runtergeladen und auch installiert (Dienst läuft laut WinDoof)

Zudem habe ich mit den EMS SQL Manager 2007 runtergeladen und gestartet. Wenn ich nun aber eine neue daten bank anlegen will kommt eine fehler meldung. Edit: Nun taucht die DB links auf ,wenn ich mich aber verbinden will kommt nen fehler :"stellen sie sicher das der Dienst läuft und das programm richtig instaliert wurde". Per MySQL commend line client kann ich auf den server connecten

Sry ich weiss das passt ihr eig net rein, aber ich bin echt am verzweiflen...

Fehler siehe Bilder

Danke schon mal.

PS: VLl kennt ja jemand ein ähnliches programm welches nicht in 30 Tagen ausläuft...

AirJordan 14. Nov 2007 16:23

Re: MySQL mit Delphi
 
Hallo Thorben,

hast du das XAMPP Control Panel mal aufgerufen? Ich habe zum Beispiel bei mir den mySQL Dienst nicht installiert, sondern nur gestartet. Wenn ich im Firefox dann localhost eingebe, komme ich auf den XAMPP Tools rauf und dort kann ich das phpMyAdmin öffnen.

Mit dem EMS SQL Manager komme ich drauf. Allerdings ist der Port bei mir auf 3306 eingestellt. Vielleicht ist da noch ein kleiner "Fehler".

Thorben_Ko 14. Nov 2007 16:44

Re: MySQL mit Delphi
 
Vielen dank für deine mühe, nur leider versteh ich immer noch net was ich machen muss. *schäm*

Wenn ich im FireFox Localhost eingeben sagt der nur seite net gefunden :D

Das mit dem Port ist bei mir auch so, auf welchen muss der den stehen?

Sry für die doofen fragen, kenn mich nur leider gar net aus wie ich Datenbanken einrichte, ich weiss nur wie ich so benutze. Wenn jemand zusätzlich ein Tutorial kennt wo erklärt ist wie man eine Datenbank einrichtet wäre ich ihm sehr dankbar

Thorben

EDIT: ich hab mir das XAMPP Control Panel runtergeladen und auch instaliert. Laut dem Panel läuft der MySQL server.
EDIT2: Ok mit dem XAMPP Control Panel neu gestartet und nun geht es, danke dir :D

herkulesamstart 5. Feb 2008 16:02

Re: MySQL mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bin grade dabei mich durch das Tut zu arbeiten, doch anscheinend habe ich schon bei der Installation von MySQL Fehler gemacht.
Wenn ich nämlich das Beispielprojet compiliere und die exe starte kann ich keine DB anlegen. Ich bekomme dann eine Fehlermeldung, siehe Anhang. Der Fehler hängt ja anscheinend mit der Datei 'libmysql.dll' zusammen. Wohin genau muss ich diese denn kopieren, damit das Beispielprojekt funktioniert?

Ich hab sie z.Z. in: C:\WINDOWS

Ich hoffe ihr versteht mein Problem.
herkulesamstart

Luckie 5. Feb 2008 17:43

Re: MySQL mit Delphi
 
Kopier sie in Anwendungsverzeichnis.

herkulesamstart 5. Feb 2008 18:33

Re: MySQL mit Delphi
 
Sry :oops: aber ich versteh nicht ganz was du mit Anwendunsordner meinst..

Etwa den ordner in dem auch die Bspprj.exe ist?

DeddyH 5. Feb 2008 18:35

Re: MySQL mit Delphi
 
Genau den, und prüfe mal, ob das die DLL ist, die auch zu Deiner MySQL-Version passt.

herkulesamstart 5. Feb 2008 18:40

Re: MySQL mit Delphi
 
Mhh.. wie prüf ich das denn?

Also ich benutze MySQL 4.1 so wie in dem Tutorial beschrieben... habe extra keine neuere bzw andere Version genommen. Und die .dll wird ja sogar schon in Luckies zip mitgeliefert. Also ich hab das Ding einfach entzippt und dann ist die dll da schon mit im Verzeichnis drin.

Aber mit der dll die von MySQL mitgeliefert wird klappst auhc nicht.

Mackhack 5. Feb 2008 19:54

Re: MySQL mit Delphi
 
Luckie,

Fehlerteufel war am Werk:

Seite 10:
Zitat:

Habe wird erstmal eine Verbindung aufgebaut,

herkulesamstart 6. Feb 2008 12:38

Re: MySQL mit Delphi
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also ich versuche mal mein Problem etwas umfassender darzustellen... :|

Dazu erläutere ich auch mein Vorgehen bei der Installation.

1. Ich habe das Setup von MySQL Server 4.1 heruntergeladen

2. Ich installiere den MySQl Server.
Einstellungen:
Setup Type: Complete
Destination Folder: C:\Programme\MySQL\MySQL Server 4.1\

3. Ich überspringe die Regestrierung bei MySQl.com. Installation abgeschlossen.
4. Der Configuration Wizard erscheint
Einstellungen:
Detailed Config. statt Standadrd Config
--> Developer Machine
--> Multifunctional DB
--> approximate num of concurrent connections. Manual Setting = 15
--> TCP/IP? Yes, Port: 3306
--> Standart Zeichensatz
-->Include Bin Directory in Windows PATH? Yes.
-->Security Settings? No! --> no password

Configuration executed:
Config File created = C:\Programme\MySQL\MySQL Server 4.1\my.ini
Service restarted succesfully.

5. Ich installiere die Server-Anwendung mysqld-nt.exe mit der Konsole
Delphi-Quellcode:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\>mysqld-nt --install
Service successfully installed.

C:\>
6. Ich versuche auch in der Konsole mysql.exe zu starten. Mir wird allerdings der Zugang unter dem Error 1045 verweigert. Dann piepts einmal schön und nix.
Delphi-Quellcode:
C:\>mysql
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

C:\>
Warum wird mir hier schon der Zugang zum MySQl Server verweigert oder ist die mysql.exe unerheblich für mich wenn ich schon die mysqld-nt.exe installiert habe?

7. Ich probier trotzdem das Demoprj von Luckie unter Delphi zu starten. Die libmysql.dll befindet sich auch ganz sicher im Anwendungsverzeichnis(Ist ja auch schon in der zip von Luckie dabei)! Dann bekomme ich folgenden Error wenn ich auf "DB Anlegen" drücke, siehe auch Anhang.
Delphi-Quellcode:
---------------------------
Debugger Exception Notification
---------------------------
Project AdressDBSQL.exe raised exception class EAccessViolation with message 'Access violation at address 100047CA in module 'libmysql.dll'. Read of address 00000358'. Process stopped. Use Step or Run to continue.
---------------------------
OK  Help  
---------------------------
8. Ich probier mit dem EMS SQl Manager 2007 für MYSQl eine DB zu erstellen. Dabei bekomme ich dann etwa den selben Fehler wie zuvor in der Konsole, siehe Anhang. Nur der User heisst hier 'root' statt 'ODBC'

Ich habe aber eine andere offene Frage:
Was ist der "XAMPP Control Panel" bzw was macht dieser genau? Er wurde ja in der Diskussion erwähnt(Ich hab ihn mir schon heruntergeladen und ausprobiert).

Ich hoffe Ihr könnt mir anhand der Infos weiterhelfen..
herkulesamstart

herkulesamstart 6. Feb 2008 20:24

Re: MySQL mit Delphi
 
Ich hab mein Problem jetzt lösen können.
Woran genau es jetzt liegt kann ich nur vermuten. Aber Wahrscheinlich liegt es an der MySQL Server Version oder ich hab bei der Installation mit dem Setup von MySQl Server 4.1 einen Fehler gemacht.

Allerdings scheint der Fehler wohl schon häufiger aufgetreten zu sein und auch immer wie durch Geisterhand wieder behoben, wie in diesen beiden Fällen:
1. php-resource.de
2. apachefriends.org

Ich benutze jetzt jedenfall MySQL Server 5.0 und haben diesen Manuell installiert(Wie bei Luckie im Tutorial beschrieben) und nicht mit nem Setup wie bei 4.1.

Trotzdem ein Danke an alle die mir geantwortet haben.
herkulesamstart

PS: macht es eigentlich einen Unterschied ob man die Pfade in der my.ini mit nem "/" oder "\" angibt?

hincapie 28. Feb 2008 06:54

Re: MySQL mit Delphi
 
Hallo, ich habe da ein Problem mit dem DELETE, näheres siehe:
http://www.delphi-forum.de/topic_MyS...ETE_81163.html
Vielleicht kann mir da jemand helfen? :coder2:

DeddyH 28. Feb 2008 07:14

Re: MySQL mit Delphi
 
Ist die Ip alphanumerisch? Dann versuch es mal mit QuotedStr.

hincapie 3. Mär 2008 07:55

Re: MySQL mit Delphi
 
Zitat:

Zitat von DeddyH
Ist die Ip alphanumerisch? Dann versuch es mal mit QuotedStr.

Danke, sieht so aus, als hät's daran gelegen... :wall: :thumb:

croid 6. Mär 2008 09:57

Re: MySQL mit Delphi
 
Ich wollte das Programm mal ausprobieren, aber wenn ich auf "Start" klicke gibt mir Delphi immer nur diese Fehlermeldung aus:
Zitat:

[Warnung] AdressDBSQL.dpr(8 ): W1005 Unit 'Borland.Vcl.Forms' ist plattformspezifisch
[Warnung] mysql.pas(72): W1005 Unit 'Borland.Vcl.Windows' ist plattformspezifisch
[Fataler Fehler] mysql.pas(73): F1026 Datei nicht gefunden: 'Winsock.dcuil'
Was mache ich falsch? Ich habe die Demo heruntergeladen und dann mit Delphi 2005 geöffnet...

Luckie 6. Mär 2008 10:06

Re: MySQL mit Delphi
 
Eventuell gibt es unter Delphi2005 die besagte Datei nicht mehr.

croid 6. Mär 2008 10:14

Re: MySQL mit Delphi
 
Welche Version hast du denn, bzw. mit welcher Version klappt das denn?

DeddyH 6. Mär 2008 10:18

Re: MySQL mit Delphi
 
Was ist denn
Zitat:

Winsock.dcuil
? Ist die Winsock.dcu mit gemeint, oder? Du kannst ja mal in Deinem lib-Verzeichnis schauen, ob Du die da findest.

Luckie 6. Mär 2008 10:18

Re: MySQL mit Delphi
 
Also erstellt wurde die Demo damals mit Delphi 6 Personal.

Bernhard Geyer 6. Mär 2008 10:19

Re: MySQL mit Delphi
 
Ich glaube nicht das das Programm für VCL.NET entwickelt wurde. Bitte beim Öffnen in D2005 das Projekt nicht nach VCL.NET wandeln lasssen.

croid 6. Mär 2008 17:28

Re: MySQL mit Delphi
 
Ah, ich habe das Problem gefunden. Wenn ich die Datein für WIN 32 öffne geht es, mit .NET geht es nicht...

xZise 10. Jun 2008 18:32

Re: MySQL mit Delphi
 
Du hast übrigens nirgends beschrieben, welche Fehlermeldungen bei _connect wiedergegeben werden könnten.

Außerdem bleiben folgende Fragen offen:
  • Einträge anzeigen: Wie kann ich mir die selektierten Einträge "Angeben" lassen
  • Anzahl zählen: Wie viele Einträge hat die Tabelle? Reicht "mysql_row_count"? (Gibt es ja gar nicht)

MfG
xZise

delnu 27. Jul 2013 10:10

AW: MySQL mit Delphi
 
Hallo ! :hi:

Was muß ich machen, damit das Beispiel aus dem Tutorial auch mit der neueren Version der Unit "mysql" http://www.audio-data.de/mysqlfrde.html funktioniert ? Da sind nämlich gute Beispiele mit bei, aber die Unit wurde leider inkompatibel weiter entwickelt, so daß alte Sachen mit der neuen Unit nicht funktionieren und neue Sachen nicht mit der alten Version.

Kann mir da jemand helfen ? Ich habe lange nichts mehr mit Delphi gemacht :pale:, benutze vor allem noch Delphi 5, mit dem diese Sachen mit geringfügigen Anpassungen zum Glück noch funktionsfähig sind.

Schon mal jetzt Danke für die Mühe ! :smile2:

p80286 27. Jul 2013 10:38

AW: MySQL mit Delphi
 
Was funktioniert denn nicht?

Ehrlich gesagt, habe ich keine Lust mir ein MySQL und diese Unit zu besorgen und dann das Zusammenspiel zu analysieren. Und Zeit erst recht nicht

Gruß
K-H

delnu 27. Jul 2013 11:09

AW: MySQL mit Delphi
 
Zitat:

Was funktioniert denn nicht?
Die neue Unit ist stark erweitert und die Zugriffe sind anders.

Beispiel:

alte Unit
Code:
  PMYSQL_FIELD = ^TMYSQL_FIELD;
  TMYSQL_FIELD = record
    name: pChar;             // Name of column
    table: pChar;            // Table of column if column was a field
    def: pChar;              // Default value (set by mysql_list_fields)
    _type: enum_field_types; // Type of field. Se mysql_com.h for types
    length: longword;        // Width of column
    max_length: longword;    // Max width of selected set
    flags: longword;         // Div flags
    decimals: longword;      // Number of decimals in field
  end;
neue Unit
Code:
  TMYSQL_FIELD = TMYSQL_FIELD401;
  PMYSQL_FIELD = Pointer;
Im Beispielprogramm ( AdressDBSQL ) wird z.B. "Cols[i] := Field.Name;" bemängelt und das ist bei der anderen Pointer-Deklaration kein Wunder. Kommentiere ich die Zeile aus, kommen zwar keine weiteren Fehlermeldungen, aber es funktioniert eben auch nichts.

Zitat:

Ehrlich gesagt, habe ich keine Lust mir ein MySQL und diese Unit zu besorgen und dann das Zusammenspiel zu analysieren. Und Zeit erst recht nicht
Dann frage ich mich, wieso Du Dich dann überhaupt dazu äußerst. Mir ging es drum, daß vielleicht jemand, der auch damit arbeitet, etwas darüber weiß.

Die neue Unit ist zweifelsfrei erheblich besser, aber eben leider nicht kompatibel zur alten gehalten worden, obwohl sie auf dieser beruht.

Medium 27. Jul 2013 22:23

AW: MySQL mit Delphi
 
Probiere es mal mit
Delphi-Quellcode:
Cols[i] := TMYSQL_FIELD(Field).Name;
. Es liegt übrigens durchaus beim Fragesteller, alle Infos beizubringen, die zu seiner Problemlösung hilfreich sein könnten. Hier sind viele hilfsbereite Leute, und wenn meine Idee hier klappt, war es nichtmals nötig die genannte Unit jemals gesehen zu haben um das Problem zu lösen. Aber die Codefetzen waren dafür unverzichtbar. Bedenke immer: Dein Kopf ist dir ganz allein deiner, und überhaupt jemanden mit exakt den selben Problemen zu finden, die man selbst hat, ist eine Nadel-im-Heuhaufen-Aufgabe. Du tust dir selbst einen großen Gefallen, wenn du möglichst viele potenzielle Helfer erreichts, in dem du umfangreicher informierst. (Oftmals ist sogar das Eindampfen auf die relevanten Infos zu einer Frage schon genug, um sich selbst zu helfen.) Gewillte Helfer schräg anzufahren bringt dir herzlich wenig.

delnu 28. Jul 2013 03:00

AW: MySQL mit Delphi
 
Hallo ! :hi:

Der Tipp funktioniert so nicht = "ungültige Typ-Umwandlung", ist aber doch schon erstaunlich nah dran, wie ich später sah, obwohl das nicht alles war. Die Fehlermeldung beim eigentlichen Quelltext an der Stelle ist übrigens = "Record, Objekt oder Klassentyp erforderlich".

Es war keineswegs unhöflich, zu fragen, wieso sich jemand äußert, der nichts zum Thema beitragen kann, weil er die Sachlage nicht kennt und sich auch nicht einarbeiten will. Die wirkliche Fehlerquelle sitzt in der inkompatiblen Umgestaltung der erweiterten, neuen Unit. Und genau diese Infos hatte ich gegeben. Nach wie vor bin ich der Ansicht, daß es in manchen Fällen (so wie hier) wenig hilft, zu versuchen, an Symptomen rumzudoktern, ohne das Ganze zu kennen. Weil das alles nicht von mir stammt, war es darum völlig sachgerecht, die Quelle der neuen Unit (nebst Beispielen) zu nennen. Die alte mit Beispiel ist ja hier in diesem Thread erwähnt, der Bestandteil des Tutorials ganz genau dazu ist.

Insofern ging ich davon aus, daß sich (falls überhaupt) genau solche Menschen dazu äussern, die auch damit arbeiten und wissen, wovon die Rede ist, und sich deshalb damit zurechtfinden oder eben jemand, der genügend Kenntnisse und Interesse hat, sich entsprechend ganz neu einzuarbeiten.

Es war wirklich nicht böse gemeint, aber wenn das alles einfach wäre, hätte ich nicht gefragt.:oops:

Ohne die alte Unit "MYSQL.PAS" (Papier-Ersparnis, weil sie kleiner als die neue ist) auszudrucken und mit der neuen zu vergleichen, hätte ich die Lösung selbst sicherlich auch nie gefunden. Es ging in diesem Fall also wirklich nicht ohne Durchsicht der Quellen, nicht mal mit Bildschirm-Direktvergleich. Und es war Glück, daß sich die Problemlösung letztlich als trivialer heraus stellte, als ich befürchtet hatte.

Nun weiß ich also mehr und kann damit vielleicht selbst anderen helfen, die auch dieses Problem haben/hatten und nicht zu lösen wußten :

Beim Vergleich der originalen Unit mit der neuen fiel mir zunächst auf, daß bei der neuen Unit eine Compiler-Anweisung {$DEFINE DONT_LOAD_DLL} existiert, die verhindert, daß im INITIALIZATION-Teil die "libmysql.dll" (im Gegensatz zum Original) automatisch geladen wird.

Im Beispiel "AdressDBSQL" muß dies dann also manuell innerhalb von "Unit1" gleich zu Beginn als Erstes in "Formcreate" erfolgen = "libmysql_load(nil);"

Dann muß die kritische Zeile zu "Cols[i] := TMYSQL_FIELD(field^).name; //Field.Name;" geändert werden, und das Beispielprog funktioniert daraufhin gleichermaßen mit alter oder neuer Unit "MYSQL.PAS" !

samso 31. Jul 2013 14:19

AW: MySQL mit Delphi
 
Einer der Ziele bei der neuen mysql.pas war es, zu erreichen, dass die Schnittstelle weitgehend unabhängig von der Version der zugrunde liegenden libmysql.dll wird. Das genau ist nicht gegeben, wenn man direkt mit den Zeigern arbeitet. Leider wurden die internen Strukturen lange Zeit über die verschieden Versionen verändert (das ist der Kern des Problems, weshalb die neue mysql.pas nur begrenzt kompatible ist).
Gleichzeitig gab für bestimmte Werte keine entsprechenden Abfragefunktionen. Erst bei den neuen Versionen (der DLL) hat man anscheinend erkannt, dass das ständige Ändern der internen Strukturen bei statisch gelinkten Bibliotheken kein Problem ist, wohl aber bei dynamisch geladenen Bibliotheken, wie z.B. DLLs. Aus diesem Grund gibt es bei der mysql.pas zusätzliche Funktionen, die den Zugriff auf bestimmte Parameter von der internen Struktur abschirmt. Dazu gehören:

mysql_field_name
mysql_field_tablename
mysql_field_default
mysql_field_type
mysql_field_flag
UpdateField

Wie gesagt, diese Funktionen können unabhängig von der verwendeten DLL verwandt werden und deshalb sollten diese Funktionen bevorzugt eingesetzt werden. "Richtig" im Sinne der neuen mysql.pas wäre also

Cols[i] := mysql_field_name(field);

delnu 1. Aug 2013 00:18

AW: MySQL mit Delphi
 
Vielen Dank für die Erläuterungen ! :hi:

Endlich mal jemand, der sich auskennt. :thumb:

Die Zuweisung Cols[i] := mysql_field_name(field); hatte ich nach einer Weile auch rausgefunden, mich dann aber doch für die von mir genannte Möglichkeit entschieden, weil die gleichermaßen mit alter wie neuer Unit funktioniert. Wer nur noch die neue Unit benutzen will, ist natürlich mit der "richtigen" Zuweisung besser bedient. Ich bin noch am Testen und benutze erstmal noch die eine, mal die andere Unit-Version.

Mir schwebt vor, weitere Beispielanwendungen zu entwickeln, z.B. Transfer aus DBF-Datenbanken mit Zugriff über die Komponente TDBF. Das soll dann auch gleichermaßen mit alter wie neuer Unit "MYSQL" funktionieren.

Ach, Du bist ja derjenige, der die Unit weiter entwickelt hat, wie ich gerade auf der Suche nach weiteren Beiträgen von Dir feststellte. Da bin ich ja glücklicherweise gleich an die beste Quelle überhaupt geraten, prima !


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