Delphi-PRAXiS
Seite 5 von 9   « Erste     345 67     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi MySQL ohne Komponenten (https://www.delphipraxis.net/6543-mysql-ohne-komponenten.html)

Lich 25. Aug 2006 11:02

Re: MySQL ohne Komponenten
 
Also mit der mysql_fetch_rows funktion? Und wie bekomme ich da den Variablentyp mit heraus.

Kannst du mir vielleicht ein Beispiel zeigen?

Chewie 25. Aug 2006 11:12

Re: MySQL ohne Komponenten
 
Ein Beispiel hab ich nicht, aber die MySQL-Dokumentation: mysql_fetch_fields().

Ist zwar in C, aber so viel anders als Pascal ist das Codestück nicht. result ist hier das, was du von mysql_use_result bzw. mysql_store_result zurückbekommen hast.

Lich 30. Aug 2006 07:44

Re: MySQL ohne Komponenten
 
Versuche gerade mit dem Befehl "mysql_fetch_fields" zu arbeiten. Nur irgentwie klappt das nicht so ganz. Hoffe du kannst mir da vielleicht weiterhelfen.

Und zwar hab ich ein Record mit 4 Feldern erstellt. Jedes Feld ist als PMySQL_FIELDS deklariert.

Wenn ich nun versuche dem record den fetch_fields befehl zuzuordnen bekomm ich den Fehler inkompatible Typen Fields und PMySQL_FIELDS? Wie muss ich die Felder deklarieren, damit das ganze klappt?

Hier mein Code:

Zitat:

type fields = record
field1: PMySQL_FIELDS;
field2: PMySQL_FIELDS;
field3: PMySQL_FIELDS;
field4: PMySQL_FIELDS;
end;

procedure bla(st: String);

var
field: fields;
query: PChar;
_myRes: PMySQL_Res;

begin
query := PChar(st);
mysql_real_query(unit1._myCon, query, length(query));
_myRes := mysql_store_result(_myCon);
field := mysql_fetch_fields(_myRes); //Hier kommt der Fehler inkompatiple Typen 'fields' und 'PMySQL_FIELDS'
end;

Chewie 30. Aug 2006 11:23

Re: MySQL ohne Komponenten
 
Wieso denn ein Record mit verschiedenen Fields? :shock:

Du kriegst bei mysql_fetch_fields eine Zeiger auf eine MYSQL_FIELDS-Struktur zurück, also eine Variable vom Typ PMYSQL_FIELDS. Dort kannst du dann über die einzelnen Felder iterieren. Wir die Struktur genau ausieht, findest ja in der API-Referenz.

Lich 30. Aug 2006 12:19

Re: MySQL ohne Komponenten
 
Ach....

OK alles Klar, habs verstanden, war mal wieder auf nem völlig falschem Dampfer.

freak4fun 8. Sep 2006 09:10

Re: MySQL ohne Komponenten
 
Hallo,
find das Tutorial klasse. ;)

Hab aber eine Frage. (Ich hab nicht alles durchgelesen, da es doch sehr lang ist. :oops: )

Kann ich, wenn ich mit einer Datenbank verbunden bin, mir alle enthaltenen Tabellen anzeigen lassen? Wenn ja, wie geht das?

Danke!

MfG
freak

Sharky 8. Sep 2006 12:54

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von freak4fun
.... mir alle enthaltenen Tabellen anzeigen lassen? Wenn ja, wie geht das? ...

Hai Freak,

SQL-Code:
SHOW TABLES [FROM db_name]
sollte Dir helfen ;-)

freak4fun 8. Sep 2006 14:29

Re: MySQL ohne Komponenten
 
Ich habs so gemacht:
Delphi-Quellcode:
function TMySQL.GetTableNames: String;
var
  lResult: PMYSQL_RES;
  I: Integer;
  lRow: PMYSQL_ROW;
begin
  Result := '';
  lResult := mysql_list_tables(FCon, PChar(''));
  //ShowMessage('RowCount: ' + IntToStr(lResult.row_count));
  for I := 0 to lResult.row_count - 1 do
    begin
      lRow := mysql_fetch_row(lResult);
      Result := Result + ',' + lRow[0];
    end;
  Delete(Result, 1, 1);
end;
>.< Mit der SQL-Abfrage komme ich net klar. :(

MfG
freak

Chewie 9. Sep 2006 09:08

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von freak4fun
>.< Mit der SQL-Abfrage komme ich net klar. :(


Also wenn du schon mit dem SHOW TABLES Probleme hast, würde ich dir dringendst anraten, dich mit SQL vertraut zu machen, bevor du programmatisch mit einer Datenbank kommunizieren willst.

BaedDog 9. Sep 2006 22:12

Re: MySQL ohne Komponenten
 
Moin,
hab mir gestern auch mal diese Unit runtergeladen und bin mehr oder weniger damit zufrieden, abgesehn das es kein mysql_fetch_assoc gibt.
Aber ich hab 'ne Frage, wie kann ich rausfinden ob ein Feld einer Abfrage NULL ist? Bei einer Abfrage werden diese ja automatisch in ein leeren String umgewandelt.
MfG
BaedDog

freak4fun 9. Sep 2006 22:41

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von Chewie
Zitat:

Zitat von freak4fun
>.< Mit der SQL-Abfrage komme ich net klar. :(


Also wenn du schon mit dem SHOW TABLES Probleme hast, würde ich dir dringendst anraten, dich mit SQL vertraut zu machen, bevor du programmatisch mit einer Datenbank kommunizieren willst.

Hab ich bis jetzt noch nicht gebraucht, also kann ich es nicht. Nach etwas rumprobieren hab ich es aber dann doch geschafft. Ich lerne halt immer nur das, was ich brauch. ;)

MfG
freak

Chewie 10. Sep 2006 09:18

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von BaedDog
Aber ich hab 'ne Frage, wie kann ich rausfinden ob ein Feld einer Abfrage NULL ist? Bei einer Abfrage werden diese ja automatisch in ein leeren String umgewandelt.

Die Ergebnisse sind ja keine direkten Strings, sondern PChars. Und die können NULL bzw. NIL sein. Und laut MySQL-Doku sind sie das auch in diesem Fall.

BaedDog 10. Sep 2006 17:37

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von Chewie
Die Ergebnisse sind ja keine direkten Strings, sondern PChars. Und die können NULL bzw. NIL sein. Und laut MySQL-Doku sind sie das auch in diesem Fall.

Ah geht doch, hatte immer versucht das Ergebnis mit = NULL abzufragen, hatte vergessen das in Delphi alles nil ist ^^

eLem3ntx 3. Okt 2006 12:49

Re: MySQL ohne Komponenten
 
Bei mir funzt es mit der Connection wirklich n1 Super TUT jedoch kommt bei der zweiten Verbindung immer ein Fehler dass in der libmySQL.dll zugriffsverletzungen seien.
Und das insert into geht nit, Zahlen gehen aber variablen oder strings nicht:
Delphi-Quellcode:
var
 var1, var2: string;
...

var1 := 'Name';
var2 := 'TestText :D';

...

query := 'INSERT INTO delphi (name, text) VALUES (var1, var2)';
mysql_real_query(_myCon, query, Length(query));
Das funkt einfach nicht kommt auch keine Fehlermeldung oder so
Jedoch so funkt es:
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES (1, 2)';
mysql_real_query(_myCon, query, Length(query));
Dann wird die 1 und die 2 eingetragen! Komisch oder??^^ Weiß jemand eine Antwort, thx im Vorraus :D

mkinzler 3. Okt 2006 12:56

Re: MySQL ohne Komponenten
 
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES ('+QuotedStr(var1)+', '+QuotedStr( var2)'+ ');';

eLem3ntx 3. Okt 2006 13:18

Re: MySQL ohne Komponenten
 
Ok erstmal danke (mkinzler du bist ja echt wirklich sehr aktiv :D)
Jedoch sagt BDES dann im Debug modus <<[Pascal Fehler] Unit1.pas(82): E2010 Inkompatible Typen: 'string' und 'PAnsiChar'>>

Liegt es vtl. daran dass die vars strings sind? Ind er DB sind die 2 spalten als "text" markiert.

mkinzler 3. Okt 2006 13:22

Re: MySQL ohne Komponenten
 
Zitat:

Liegt es vtl. daran dass die vars strings sind? Ind er DB sind die 2 spalten als "text" markiert.
Nein, es liegt an der Funktion aus der Dll.

Versuch mal:
Delphi-Quellcode:
mysql_real_query(_myCon, PChar(query), Length(query));

eLem3ntx 3. Okt 2006 13:27

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von mkinzler
Zitat:

Liegt es vtl. daran dass die vars strings sind? Ind er DB sind die 2 spalten als "text" markiert.
Nein, es liegt an der Funktion aus der Dll.

Versuch mal:
Delphi-Quellcode:
mysql_real_query(_myCon, PChar(query), Length(query));

Nein funktioniert leider auch nicht da die INSERT INTO Zeile ja zuerst kommt und da diese ja schon als "falsch" markiert wird kommt es gar nicht zum mysql_real_query.
hab auch mal folgendes versucht:
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES ('+var1+', '+var2+')';
Dort kommt jedoch der gleiche Fehler wie bei deinem query (QuotedStr...).

Hab auch schon versucht die vars als PChar zu setzen, jedoch ohne Erfolg :(
Aber so was muss ja möglich sein!! :wall:

mkinzler 3. Okt 2006 13:31

Re: MySQL ohne Komponenten
 
Delphi-Quellcode:
query := 'INSERT INTO delphi (name, text) VALUES ('+PCahr(QuotedStr(var1))+', '+PChar(QuotedStr( var2))'+ ');';

eLem3ntx 3. Okt 2006 13:50

Re: MySQL ohne Komponenten
 
Hmm geht leider immer noch nicht sagt immer noch den gleichen Fehler dass es inkompatibel mit Pchar oder string sei!

cb01 14. Okt 2006 15:41

Re: MySQL ohne Komponenten
 
Hi,

ich will mich mal etwas mit diesem Tutorial befassen, aber leider habe ich bereits am Anfang ein Problem, jedes mal wenn ich versuche die Verbindung herzustellen, kriege ich diese Meldung

Zitat:

Client does not Support authentication protocol request by server; Consider upgrading MySQL Client
Die Firewall(McAfee Personal Firewall Plus) habe ich eigentlich soweit eingerichtet, aber dennoch kriege ich den Fehler nicht weg.

Hat evtl. jemand einen Tipp für mich?
Mein Code:

Delphi-Quellcode:
unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit12;

type
  TForm11 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.Button1Click(Sender: TObject);
var
  _myCon: PMySQL;      //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar;      //die Anmeldedaten
  begin
   //wir werden uns als Root-Benutzer in localhost einloggen, ohne eine
  //bestimmte Datenbank auszuwählen
  host := 'localhost';
  user := 'root';
  pass := nil;
  db := nil;
 
  //jetzt wird _myCon initialisiert
  _myCon := mysql_init(nil);
  if _myCon = nil then
  begin
    ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren');
    Exit;
  end;
 
  //anschließend wird die Verbindung hergestellt
  if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then
  begin
    ShowMessage('Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;
 
  ShowMessage('Verbindung hergestellt');
 
  //zum Schluss wird die Verbindung wieder geschlossen
  mysql_close(_myCon);
  end;

end.
Gruß

Chris

Chewie 15. Okt 2006 14:58

Re: MySQL ohne Komponenten
 
Hallo Chris,

die Fehlermeldung sagt dir doch genau, was du tun musst:

Zitat:

Client does not Support authentication protocol request by server; Consider upgrading MySQL Client
Du hast also eine libmysql.dll, die nicht zu der Server-Version passt. Besorg dir also die Client-DLL, die der Version des Servers entspricht.

Bääm 22. Nov 2006 14:06

Re: MySQL ohne Komponenten
 
HI!

Ich habe statt host = 'localhost' ma meine Netzwerk-IP Adresse eingegeben und dann kommt eine Fehlermeldung:


Host 'Computername' is not allowed to connect to the Mysql Server.


Hm ?! Was muss ich machen? Schließlich soll das programm ja auch funktionieren, wenn ich einen Mysql-Server übers Internet ansteuern möchte !

thx für antworten!

Bernhard Geyer 22. Nov 2006 14:22

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von Bääm
Ich habe statt host = 'localhost' ma meine Netzwerk-IP Adresse eingegeben und dann kommt eine Fehlermeldung:

Host 'Computername' is not allowed to connect to the Mysql Server.

Hm ?! Was muss ich machen? Schließlich soll das programm ja auch funktionieren, wenn ich einen Mysql-Server übers Internet ansteuern möchte !

Die Fehlermeldung sagt doch auch wieder alles: Du darfst von diesem PC's aus nicht mit diesen User auf die Datenbank zugeifen. Willst du es trotzdem muß du halt die Konfiguration des User in der DB ändern das er das darf.

Falls du MySQL bei irgendeinen Webhoster hast und keinen direkten Adminzugang für User-Konfiguration hast könnte es sein das dein Hoster das aufgrund von Sicherheitsaspekten nicht erlaubt bzw. entsprechend konfiguriert.

Bääm 22. Nov 2006 16:47

Re: MySQL ohne Komponenten
 
mir ist durchaus bewusst was diese fehlermeldung sagt! Aber ich finde nix in der DB (teste es über xampp) wo ich das einstellen könnte! Da ich mich via root-User einlogge hat dieser alle Rechte !

Chewie 23. Nov 2006 20:17

Re: MySQL ohne Komponenten
 
Besorg dir mal ein Administrationstool (z.B. phpMyAdmin) und sieh dir dort die Benutzer an, insbesondere die Hosts, von denen sie zugreifen dürfen.

Bääm 24. Nov 2006 13:15

Re: MySQL ohne Komponenten
 
Ja phpmyadmin is dabei ! Hab die funktion jetzt auch gefunden !thx nochmal!
Jetzt habe ich noch eine Frage! Habe n mysql server bei server4you, wie kann ich jetzt auf diesen zugreifen ?
muss ich da was besonderes beachten ?

eLem3ntx 28. Nov 2006 18:52

Re: MySQL ohne Komponenten
 
Hey Leute hab immernoch das große problem dass ich keine Variablen per mySQL inserten kann.
Delphi-Quellcode:
 var1 := 'testname';
  var2 := 'testeintrag';

    query := 'INSERT INTO delphi (name, text) VALUES (var1, var2)';
    mysql_real_query(_myCon, PChar(query), Length(query));
So wenn ich nun vor und nach den vars nach VALUES jeweils ein " setze, wird in die DB var1 und var2 als text eingetragen, jedoch will ich den inhalt dieser Variablen aber dass geht nicht da dass query mit den einzelnen kleinen anführungszeichen gestartet und beendet wird, kann man nicht irgendwie z.B. einen Schrägsrich davor machen (\') oder gibt es eine andere methode einen String mit Text zu füllen ohne die einfachen ("'") anführunsstrichchen zu benutzen?

Mumpe 28. Nov 2006 19:02

Re: MySQL ohne Komponenten
 
Vielleicht so?
Delphi-Quellcode:
 
var1 := 'testname';
var2 := 'testeintrag';

    query := 'INSERT INTO delphi (name, text) VALUES ('+var1+','+ var2+')';
    mysql_real_query(_myCon, PChar(query), Length(query));

cb01 13. Dez 2006 22:36

Re: MySQL ohne Komponenten
 
Hi,

lange ist's her, nun hab ich endlich mal wieder mehr Zeit für Delphi und leider auch gleich ein Problem, es geht im Prinzip immer noch um das Problem von weiter oben, ich finde irgendwie keine libMySQL die mit meinem Server funktionert, ich habe einen Suse 9.3 Server mit MySQL 4.1.10a, hat evtl. jemand einen Link wo ich die .dll downloaden kann?...

Gruß

Chris

Chewie 16. Dez 2006 01:07

Re: MySQL ohne Komponenten
 
Die DLL ist beim Server dabei.

Silk 30. Dez 2006 18:01

Re: MySQL ohne Komponenten
 
...kann ich mit dieser Methode (ohne Komponente) auch prepared procedures verwenden?

Wenn ja, wie?

Chewie 30. Dez 2006 19:58

Re: MySQL ohne Komponenten
 
Ich kann mit dem Begriff "Prepared procedures" zwar nix anfangen, gehe aber mal davon aus, dass du das meinst, was ich unter "Stored procedures" verstehe. Und die müssten sich über mysql_query bzw. mysql_real_query genauso ausführen lassen wie jede andere SQL-Abfrage.

Silk 30. Dez 2006 20:33

Re: MySQL ohne Komponenten
 
ja, ich meine natürlich "Stored Procedures".

Allerdings weiß ich nicht ob es möglich ist, "Prepared Statements" auszuführen. Das war eigentlich meine Frage.

Chewie 30. Dez 2006 21:05

Re: MySQL ohne Komponenten
 
Der Einsatz von Prepared Statements scheint laut Handbuch möglich, ich habs allerdings nie ausprobiert. Folgender Link sollte dir weiterhelfen:
http://dev.mysql.com/doc/refman/5.1/...tatements.html

Silk 31. Dez 2006 12:59

Re: MySQL ohne Komponenten
 
Sämtliche Funktionen die "stmt" beinhalten (z.B. mysql_stmt_init, mysql_stmt_execute,...) sind in der mysql.pas nicht enthalten. Das läßt womöglich darauf schließen, dass es mit der mysql.pas nicht funktioniert, Prepared Statements zu nutzen.

Ich habe leider "nur" Delphi2005 PE und dort ist der Einsatz der ZEOS-Komponente nicht möglich. Wie kann ich trotzdem mit prepared Statements arbeiten???

Chewie 31. Dez 2006 14:37

Re: MySQL ohne Komponenten
 
Die verlinkte mysql.pas basiert auf der Schnittstelle der 3.x-Versionen. Vielleicht findest du irgendwo eine aktuellere Version der Header-Übersetungen (war hier nicht mal im Forum was dazu?), ansonsten müsstest du die fehlenden Konstrukte und Funktionen aus den C-Headern selbst übersetzen.

SMERK 26. Jan 2007 06:50

Re: MySQL ohne Komponenten
 
Moin Moin!

Cooles Tut!! Aber leider kommt bei mir die Fehlermeldung: "Access violation at adress 10006C36 in module 'libmysql.dll'. Read of adress 00000014"!
Was heißt das? habe gestern erst die neuste version von der dll gezogen!!! Kann mir jemdand helfen?

mkinzler 26. Jan 2007 06:56

Re: MySQL ohne Komponenten
 
Zitat:

Zitat von SMERK
Moin Moin!

Cooles Tut!! Aber leider kommt bei mir die Fehlermeldung: "Access violation at adress 10006C36 in module 'libmysql.dll'. Read of adress 00000014"!
Was heißt das? habe gestern erst die neuste version von der dll gezogen!!! Kann mir jemdand helfen?

Welche MySQL-Version setzt du ein?

SMERK 26. Jan 2007 18:01

Re: MySQL ohne Komponenten
 
Hae das mal an einer älteren SQL version getestet! geht! Danke! hatte xampp die neuste version drauf !! Danke für den tipp


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 Uhr.
Seite 5 von 9   « Erste     345 67     Letzte »    

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