Delphi-PRAXiS
Seite 25 von 36   « Erste     15232425 262735     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)

pemue 24. Jan 2008 07:32

Re: MySQL ohne Komponenten
 
Ich hab mal noch eine frage, und zwar wenn ich die Thread ID ermitteln will, tue ich das doch mit 'mysql_thread_id()'.
Ich bin leider da noch nicht so ganz durchgestiegen welche Var muss ich jetzt deklarieren, und wie/wo ermittel ich die id?
Ein Codebsp würde mir da mit sicherheit weiterhelfen, ich brauche ja nur erstmal den Ansatz.

Danke
Pemue

Hat sich schon erledigt, ...

pemue 25. Jan 2008 07:31

Re: MySQL ohne Komponenten
 
So aber jetzt habe ich mal noch ein Anliegen:
und zwar beim auslesen der Spaltenüberschriften.

Delphi-Quellcode:
var
  _myFields: PMYSQL_FIELD;
 
{...}
begin
{...}

  _myFields:= mysql_fetch_field(_myRes);
  ShowMessage(String(_myFields.name));

{...}
end;
das ganze erstmal nur zu testzwecken... aber es wird immer nur 'id' ausgegeben, obwohl die spaltenüberschriften der Tabelle: 'id', 'author', 'date' und 'entry' sind...
Was mache ich falsch?

DeddyH 25. Jan 2008 07:34

Re: MySQL ohne Komponenten
 
Du liest ja auch immer nur den ersten Wert. Gibt es so etwas wie mysql_enumfields? Wenn ja, müsstest Du das aufrufen und in einer Schleife durch die Felder iterieren.

pemue 25. Jan 2008 07:58

Re: MySQL ohne Komponenten
 
ja es gibt _type: enum_field_types im TMYSQL_FIELD = record.
aber wenn ich jetzt schreibe:
Delphi-Quellcode:
 
for i := 0 to High(Posts) do
  begin
    _myFields:= mysql_fetch_field(_myRes);
    ShowMessage(_myFields._type[i]);
end;
Dann kommt immer: 'Array-Typ erforderlich';
aber wenn ich das array in der mysql.pas reinschreibe
Delphi-Quellcode:
  TMYSQL_FIELD = array[0..MaxInt div SizeOf(pChar) - 1] of pChar;
sagt er mir 'bezeichner redifiniert'

DeddyH 25. Jan 2008 08:45

Re: MySQL ohne Komponenten
 
Der Link zur Header-Übersetzung im ersten Post ist leider tot. Daher rate ich mal ins Blaue: wenn die Funktionen so heißen wie in PHP und auch so ähnlich arbeiten, kannst Du Folgendes einfach nach Delphi übersetzen (das Beispiel unten): http://www.selfphp.de/funktionsrefer...ist_fields.php

pemue 25. Jan 2008 10:07

Re: MySQL ohne Komponenten
 
Den Header kann man Hier herunterladen, vielleicht kannst du mir dann etwas besser helfen, denn ich bekomme es leider nicht auf die reihe den php-code zu übersetzen :(

[EDIT:]

also im header steht ja
Delphi-Quellcode:
  mysql_list_fields: function(_mysql: PMYSQL; const table, wild: pChar): PMYSQL_RES; stdcall;
nur leider weis ich mit diesem 'wild' nichts anzufangen
ich habe jetzt folgenden code:
Delphi-Quellcode:
  query := 'SHOW COLUMNS FROM posts';
  mysql_real_query(_myCon, pchar(query), Length(query));
  _myRes := mysql_list_fields(_mysql, 'posts', ); //alle Datensätze vom Server anfordern
  if _myRes = nil then
  begin
    ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;

DeddyH 25. Jan 2008 10:27

Re: MySQL ohne Komponenten
 
Ich kann das gerade hier nicht testen, da es schon beim mysql_init kracht. Mal sehen, ob ich heute Abend zu Hause etwas probieren kann.

pemue 25. Jan 2008 10:32

Re: MySQL ohne Komponenten
 
dankeschön das währe echt nett von dir, vielen dank schonmal ich freu mich auf eine erfolgsversprechende antwort

Chewie 25. Jan 2008 12:10

Re: MySQL ohne Komponenten
 
Leute, was meint ihr denn, wozu MySQL die Schnittstellen der APIs beschreibt? Auf jeden Fall nicht, damit Leute rätselraten, was wohl bestimmte Parameter bedeuten ;-)

Hier steht wasa über diese Funktion.

DeddyH 25. Jan 2008 12:32

Re: MySQL ohne Komponenten
 
Du kannst es ja mal so versuchen (ungetestet):
Delphi-Quellcode:
type TErgebnis = array of string;
var Ergebnis: TErgebnis;
    Row: PMySQL_Row;

...

query := 'SHOW COLUMNS FROM posts';
  mysql_real_query(_myCon, pchar(query), Length(query));
  _myRes := mysql_store_result(_myCon);
  if _myRes = nil then
  begin
    ShowMessage('Es konnten keine Datensätze zurückgebenen werden. Ursache: ' + mysql_error(_myCon));
    Exit;
  end;
  SetLength(Ergebnis, mysql_num_rows(_myRes));
  for i := Low(Ergebnis) to High(Ergebnis) do
    begin
      Row := mysql_fetch_row(_myRes);
      Ergebnis[i] := Row[0];          //Name des Felds
    end;
  mysql_free_result(_myRes);
  SetLength(Ergebnis,0);


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.
Seite 25 von 36   « Erste     15232425 262735     Letzte »    

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