Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken (https://www.delphipraxis.net/39429-datenbank-einsteiger-tutorial-fuer-mysql-datenbanken.html)

Luckie 2. Feb 2005 15:32


Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Ich habe mich in den letzten Tagen etwas mit der Datenbankprogrammierung mit dem mySQL-DatenbankServer beschäftigt. Einen ersten Einstieg habe ich durch das Tutorial von Chewie hier in der Delphipraxis gefunden. Da ich nur eine Delphi Personal Version zur Verfügung habe, kam es mir natürlich sehr gelegen, dass eine mySQL Datenbank mit den entsprechenden Header-Übersetzungen der C-API es auch ermöglicht eine SQL-Datenbank mit Delphi Personal zu erstellen und damit dann auch zu arbeiten. Herausgekommen ist dabei ein mySQL-Tutorial und eine Demo Adresse-Datenbank. Im Gegensatz zu Chewies Tutorial werden hier weder Datenbankkenntnisse noch SQL Kenntisse vorausgesetzt.

Aus dem Inhalt:
  1. Einleitung
  2. Was wir brauchen - Vorbereitung
  3. Datenbanken, Tabellen, SQL
  4. Mit dem Server verbinden
  5. Anlegen einer Datenbank
    Ausführen eines Querys
  6. Anlegen einer Tabelle
    Verfügbare SQL Datentypen
    Schlüssel und Indizes
    CREATE TABLE
    Löschen einer Tabelle
  7. Datensätze einfügen, editieren und löschen
    Einen Datensatz einfügen
    Einen Datensatz editieren
    Einen Datensatz löschen
  8. Datensätze filtern
    ORDER BY
    WHERE

Link zum Tutorial: mySQL Datenbanken mit Delphi - Teil 1.

Luckie 8. Feb 2005 13:03

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Kleinen Bug im der Demo Anwendung behoben. Eine Datenbank sollte sich jetzt auch aus dem Programm raus erzeugen lassen.

Luckie 13. Feb 2005 16:06

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Zu dem Tutorial ergaben sich wohl noch ein paar Fragen. Ich habe hier mal die entsprechenden Threads gesammelt:

Wie Daten aus Datenbank auslesen

mimi 30. Jul 2006 10:31

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich habe mir den mysql server runtergealden und alles so gemacht wie du es beschrieben hast jedoch bekomme ich beim "Importieren" nur dise fehlermeldung:
---------------------------
Adressdbsql
---------------------------
Zugriffsverletzung bei Adresse 00E64CD7 in Modul 'libmysql.dll'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------

und warum muss die anwendung ins internet gehen ?
die libmysql.dll befindet sich im c:\windows\systen32 verzeichnis

Luckie 30. Jul 2006 11:29

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Meinst du meine Demo? Die geht bestimmt nicht ins Internet, kannst dir ja den Code angucken und selber kompilieren.

Hat du denn das schon mal debugt? An welcher Stelle kommt denn die AV?

mimi 30. Jul 2006 12:20

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
das habe ich gemacht. und deine demo möchte ins internet gehen warum weiß ich nicht bzw. meine Firewall schlägt alarm... darum...

aber mal eine andere frage warum kommt die fehlemeldung ???
kannst du mir evlt. den genauen link geben von den was du runtergeladen hast ?

Sascha L 30. Jul 2006 12:24

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Der MySQL-Server läuft doch lokal und nutzt doch sicherlich einen Port oder nicht?

Und genau deswegen schlägt wahrscheinlich deine Firewall Alarm, weil die alle Port-Zugriffe erstmal blockt. Bei der Warnung müsste doch auch stehen auf welchen Port und ob es lokal ist oder eine Internet-Adresse also die IP-Adresse.

mimi 30. Jul 2006 13:46

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
das wird es sein... ich habe jetzt mal mit MySql Query Browser rumgespielt hatte ein tutorial von delphi Forum gefunden das ist nicht schlecht ich würde sage mysql läuft bei mir aber leider nicht das beispiel programm von Luckie..... :(

Matze 30. Jul 2006 13:57

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Bei mir geht obiger Link nicht (404). Die Endung muss .php und nicht .shtml lauten.

mimi 30. Jul 2006 16:57

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Der port wird anscheind von meiner firewall auch nicht gespert weil ich hatte die firwall deaktivirt und da kam die gleiche fehlermeldung...

fwsp 30. Jul 2006 17:48

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Code:
Homepage von Michael Puff
404 Not Found

File or Directory not found.

[url]http://www.michael-puff.de[/url]
[url]http://programme.michael-puff.de[/url]
Apache/1.3.37 Server at [url]www.luckie-online.de[/url] Port 80

mimi 30. Jul 2006 18:05

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich glaube das die units die ich da runtergealden habe für delhpi warscheinlich zu alt sind... du gibts ja diesen link an:http://www.fichtner.net/delphi/mysql.delphi.phtml
dort gibt es die units aber nur für die version: 3.23.49 aber es gibt ja inzwischen die 4.... version von mySql bzw. die 5.... version.. könnte es dran liegen und wenn kennt eine eine frei enhältliche version für DP7 PE ?

mimi 30. Jul 2006 18:24

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich konnte eine verbinung herstellen nach langen hin und her... uns zwar mit dem "Tutorial von Chewie "

Luckie 30. Jul 2006 21:52

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Und was macht der anderes, dass es klappt?

mimi 31. Jul 2006 13:48

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Liste der Anhänge anzeigen (Anzahl: 1)
der nutzt glaube ich die DLL nicht bzw. bindet die richtig ein ich weiß es leider nicht genau...
ich hänge es mal als anhang dran
die tabblen werden noch nicht gefüllt aber ich kann mich anmelden... an den mySql server !

Luckie 31. Jul 2006 17:01

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Geht wunderbar. die mysql.pas muss im Projektverzeichnis liegen und natürlich die libmysql.dll im Exe Verzeichnis. Das Passort ist übrigens standardmäßig leer.

mimi 31. Jul 2006 17:12

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
geht immer noch nicht und es liegt nicht am tutrial bei den andren tutorial geht es auch nicht...

Zitat:

---------------------------
Adressdbsql
---------------------------
Zugriffsverletzung bei Adresse 00E64CD7 in Modul 'libmysql.dll'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------

mimi 31. Jul 2006 17:19

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich habe herrausgefunden das der fehler hier lieg:
Delphi-Quellcode:
function Insert(Kontakt: TKontakt): Boolean;
var
  query: string;
  ErrorCode: Integer;
begin
  ErrorCode := mysql_select_db(Descriptor, DBNAME);
wenn das weiter hilft... ich weiß einfach nicht mehr weiter.... warscheinlich muss ich das projekt MySql + Delphi aufgeben weil es einfach nicht funktniert.... ich dachte mir schon das es schwer werden wird aber das es schon beim hinzufügen nicht klappt... ich habe mir MySQL Query Browser runtergeladen und damit rumgespielt damit geht es... d.h. es liegt an delhpi bzw. an dieser DLL.... warum ?

mimi 31. Jul 2006 17:24

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich habe gesehen das es hier schon fehler gibt:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
var
  Cols: TCols;
  Rows: TRows;
  query: string;
  i: Integer;
  s: string;
begin
  if FirstTime then
  begin
    FirstTime := False;
    Form1.Refresh;
    StringGrid1.Refresh;
    Descriptor := mysql_init(nil);
    log('Mit Datenbankserver verbinden');

    Descriptor := Connect(Descriptor, PChar(HOST), Pchar(USER), Pchar(PW), PChar(''), PORT);
    ShowMessage(mysql_error( Descriptor));
ich kann nochnicht mal auf Descriptor zugreifen....

Luckie 31. Jul 2006 17:33

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Der Fehler wäre relativ einfach zu beheben gewesen:
Delphi-Quellcode:
if ExecQuery(DBNAME, query, Cols, Rows) then // <- if eingefügt
      begin
        for i := 0 to length(Cols) - 1 do
        begin
          s := s + Cols[i];
        end;
        for i := 0 to length(Rows[0]) - 1 do
        begin
          s := s + ' ' + Rows[0, i];
        end;
      end;
Wenn man dann die DB und die Tabelle erzeugt, geht alles wunderbar.

Chewie 31. Jul 2006 18:18

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Nochmal eine kleine Sache zu den Versionen:

Die Header-Datei auf der Fichtner-Homepage ist alt, das ist richtig. Aber die Client-DLLs der heutigen Server-Versionen haben noch außen hin noch die gleiche Schnittstelle, man kann mit der Header-Übersezung vielleicht nicht alle Funktionalitäten benutzen, aber prinzipiell gehts.

Allerdings hat sich intern glaub ich was geändert, ein Zugriff mit einer Client-DLL der Version 3.x auf einen 4-Server ist soweit ich weiß nicht mehr möglich. Also um da Probleme zu vermeiden, sollte man sichergehen, dass die DLL am besten im gleichen Verzeichnis liegt und der gleichen Version wie der Server, auf den zugegriffen wird, entspringt.

mimi 31. Jul 2006 18:29

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
habe ich versucht geht auch nicht.. das beispiel von luckie hatte ich getestet da kommen die fehler.... ich werde glaube ich nocheinmal alles runterhauen was ich von mySql habe und es nocheinmal installieren evlt. könntes du/ihr mir dazu eine kleine anleitung geben.... weil ich hatte mich an die anleitung von Luckie gehalten und anscheiend habe ich die wohl falsch verstanden.

mimi 31. Jul 2006 19:42

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
so ich habe es nocheinmal neuinstalliert es geht immer noch nicht...
ich habe mir die datei:
mysql-noinstall-4.1.21-win32.zip runtergeladnen und entpackt dann den die anweisung wie von Luckie beschrieben im CMD ausgeführt... dann habe ich nacheinader alle dlls die ich gefunden habe ins system32 verzeichnis verschoben und es hat mit keiner gekalpt ich hatte sogar die firewall ausgeschlatet für diesen test.... ich weiß nicht warum das nicht geht... ich hoffe einer von euch kann mir noch weiter helfen währe für jeden tipp dankar... und wenn es nicht geht dann geht das halt nicht.....

Chewie 31. Jul 2006 19:45

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Läuft denn die Datenbank überhaupt sprich klappt der Zugriff mit einem anderen Programm?
Und sind die Versionen des Servers und der DLL wirklich identisch?

Wenn ja, häng mal dein ganzes Projekt als Anhang an.

mimi 31. Jul 2006 20:11

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Liste der Anhänge anzeigen (Anzahl: 1)
kennst du das programm "MySQL Query Browser" ? da habe ich mySql befehle eingeben und es hat geklappt problemlos und darum glaube ich einfach das es um die delphi Header liegen muss.
und was die versionen angeht da bin ich mir auch zimlich sicher das die gleich sind oder meinst du jetzt die version der unit und der libmySql.dll ? die sind auch gleich.....
so jetzt habe ich gesehen der server wahr nicht gestartet und bei dem programm von luckie im log steht jetzt folgendes:
Zitat:

31.07.2006 21:10:06: Mit Datenbankserver verbinden
31.07.2006 21:10:06: Server: 4.1.21-community-nt
31.07.2006 21:10:06: localhost via TCP/IP
31.07.2006 21:10:06: Client: 4.1.21
31.07.2006 21:10:06: Protokoll: 10
31.07.2006 21:10:06: Zeichensatz: latin1
31.07.2006 21:10:06: SHOW TABLES
und kurzt danahc kommt diese fehlermledung
Zitat:

---------------------------
Adressdbsql
---------------------------
Zugriffsverletzung bei Adresse 00465DC3 in Modul 'AdressDBSQL.exe'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------
warum weiß ich nicht das werde ich morgen sehen jetzt gehe ich ins Bett. Vielen dank für eure HILFE !!!
soweit wahr ich heute noch nicht bis jetzt *G*

Chewie 31. Jul 2006 20:20

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Du führst am Anfang einen Query in der Datenbank "AdressDB" aus, prüfst aber nicht, ob die Datenbank überhaupt existiert.
Tut sie das nicht, kommt der von dir genannte Fehler. Existiert die Datenbank aber, dann bekomm ich keine Exception.

Luckie 31. Jul 2006 21:05

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Jupp. Das ist es. Es ist eben nur ein Tutorial.

mimi 1. Aug 2006 07:49

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
ich dachte im beispiel programm würde alles passieren also das mit dem erstellen der DB
ich habe den eindruck das ich auch noch tabbelen erstellen muss aber wie ?
weil ich bekomme jetzt (warum weiß ich nicht, habe nichts gemacht) folgende fehlermeldung:
Zitat:

01.08.2006 08:47:05: Tables_in_adressdb
01.08.2006 08:47:05: SELECT * FROM kontakte ORDER BY name, vorname
01.08.2006 08:47:05: Table 'adressdb.kontakte' doesn't exist
im log fenster zu sehen....

mimi 1. Aug 2006 07:55

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
jetzt hat es funktioniert der fehle ist folgender: zwei button hatten die falsche position darum habe ich die nicht gesehen:
btnCreateBD
btnCreateTable
da musst du die position anpassen
oder wahr das absicht *G* ?

Luckie 1. Aug 2006 11:09

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Also ich sehe sie bei mir. :gruebel:

mimi 1. Aug 2006 17:20

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
naja ich habe sie nicht gesehen.... wie denn auch sei jetzt geht es... eine frage noch:
wie kann ich die cvs datei als bin abspeichern oder bleibt das auch bei größern db als Assci ?

drivter 5. Jan 2007 19:36

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
hallo luckie,

da das tutorial ja für den laien aufgebaut ist stellt sich bereits in deiner sektion

"was wir brauchen vorbereitung..."

die frage nach der konfigurationsdatei

"...ist es nötig noch eine Konfigurationsdatei im Windowsordner abzulegen, dies muss man eventuell von Hand machen"

--
mysqld]
basedir=C:/Programme/MySQL/MySQL Server 4.1/
datadir=C:/Programme/MySQL/MySQL Server 4.1/data/
[WinMySQLAdmin]
Server=C:/Programme/MySQL/MySQL Server 4.1/bin/mysqld-nt.exe
--

wo muss die datei hin, wie wird sie benannt usw.

habe ich etwas übersehen?

gruss andreas

krzyk_91 25. Aug 2009 08:11

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Hallo, ich habe das Totorial gelesen, und benutze diese Weise, mit der MySQLdatenbank zu verbinden. Ich habe nur ein kleines Problem damit. Manchmal, wenn ich etwas in der Datenbank machen will bekomme ich einen Fehler:
Lost connection to MySQL server during query

Ich weiß, aber nicht in welechem Platz das Problem steckt, denn ich bekomme keine Nachricht vom Delphikomilator. Ich möchte, falls dieses Problem vorkommt, noch einmal mit der Datenbank verbinden. Kann mir jemand dabei helfen??

Luckie 25. Aug 2009 08:40

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Könnte was mit der Netzwerkverbindung zu tun haben und wenige rmit deinem Datenbankziugriff. aber wenn du die Exception bekommst, verbinde dich doch einfach neu und führe den Query noch nmal aus.

krzyk_91 25. Aug 2009 08:50

Re: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Da liegt der Hund begraben. Ich bekomme keine Exception, sogar wenn ich das Programm im Delphi (durch F9) betätige. Ich bekommen nur diesen Fehler und ich weiß nicht in welchem Platz das Problem steckt.

KiroKoe 21. Sep 2011 09:45

AW: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
hmm leider ist der link tot fürs tutorial

Jumpy 22. Sep 2011 07:31

AW: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Ist nur umgezogen:

http://www.michael-puff.de/Programmi...phi/Tutorials/

CarstenH 13. Mär 2012 17:31

AW: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Ich habe das Tutorial (sehr gut, danke!) erfolgreich in ein kleines Testprogramm umgesetzt. Nun möchte ich eine Datei als Binärdaten speichern und bekomme es nicht hin.

Ich habe mit HeidiSQl ein Blobfeld in der Tabelle angelegt und schaffe es auch, bmp-Dateien reinzuschreiben, aber diese kommen nicht immer vollständig an. Ich tippe mal, dass es ein Problem mit nullterminierten Strings ist. Folgendermaßen bin ich vorgegangen und wäre für Tipps dankbar.

Carsten

Code:
var
  s: AnsiString;
  query: AnsiString;
  f: TFileStream;
  Fehler:longint;
 
begin
  f := TFileStream.Create(FLink, fmOpenRead + fmShareDenyWrite);
  try
    SetLength(s, f.Size);
    f.ReadBuffer(Pointer(s)^, Length(s));
  finally
    f.Free;
  end;
  query:='INSERT INTO dateien(typ,buffer) VALUES(''bmp'',' + QuotedStr(s) + ')';
 
  if FDescriptor<>nil then
  begin
    Fehler:=mysql_select_db(FDescriptor, PChar(FDBName));
    if Fehler = 0 then
    begin
      Fehler:=mysql_real_query(FDescriptor, PAnsiChar(query), length(query));
    end;
    if Fehler <> 0 then
    begin
      MessageDlg(mysql_error(FDescriptor), mtWarning, [mbOK], 0);
    end;
  end
  else beep;
end;

p80286 13. Mär 2012 22:02

AW: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
Auch wenn man rein theoretisch jeden beliebigen Wert in einem Ansi-String eintragen kann, halte ich das für nicht so optimal. Ein vorhergehendes codieren (Base64 z.B.) wäre vllt. hilfreich.
und woher weißt Du, daß die Daten nicht vollständig übergeben werden?
Woliest Du die Daten wieder aus?

Gruß
K-H

CarstenH 13. Mär 2012 22:36

AW: Datenbank-Einsteiger-Tutorial für mySQL-Datenbanken
 
HeidiSQL stellt die Binärdaten als Hexwert da und die defekten Bilder kommen nicht mit voller Länge dort an.
Base64 werde ich mir anschauen, sollte helfen, wenn meine Vermutung stimmt.

Carsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr.
Seite 1 von 2  1 2      

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