Delphi-PRAXiS
Seite 22 von 36   « Erste     12202122 232432     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)

SMERK 28. Jan 2007 20:20

Re: MySQL ohne Komponenten
 
Delphi-Quellcode:
begin
var1 := 'test1';
var2 := 'test2';
host := 'server';
user := 'root';
pass := '*****';
db := 'db' ;

_myCon := mysql_init(nil);
if _myCon = nil then
  begin
    ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren');
    Exit;
  end;

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;

query := 'INSERT INTO tabelle (NAME, TEXT) VALUES ('+PChar(QuotedStr(var1))+','+PChar(QuotedStr(var1))+')';
mysql_real_query(_myCon, query , Length(query));


mysql_close(_myCon);
end;

mkinzler 28. Jan 2007 20:23

Re: MySQL ohne Komponenten
 
Delphi-Quellcode:
mysql_real_query(_myCon, PChar(query) , Length(query));

SMERK 28. Jan 2007 20:25

Re: MySQL ohne Komponenten
 
der fehler bleibt

mkinzler 28. Jan 2007 20:27

Re: MySQL ohne Komponenten
 
Was für einen Typ hat query?

SMERK 28. Jan 2007 20:28

Re: MySQL ohne Komponenten
 
pchar

Delphi-Quellcode:
var
 _myCon: PMySQL;
 query: PChar;
 var1, var2 : pchar;                //wechsel ich immer zwischen PChar und String
 host, user, pass, db: PChar;
so das sind die variablen

mkinzler 28. Jan 2007 20:31

Re: MySQL ohne Komponenten
 
Ändere den Typ mal in String und dann:
Delphi-Quellcode:
query := 'INSERT INTO tabelle (NAME, TEXT) VALUES ('+QuotedStr(var1)+','+QuotedStr(var2)+')';
mysql_real_query(_myCon, PChar(query) , Length(query));

SMERK 28. Jan 2007 20:32

Re: MySQL ohne Komponenten
 
oh verdammt!! das hätte ich auch selber sehen können!!



Es funktioniert!!
VIELEN VIELEN DANK!!!! Super HILFE!

Svenkan 10. Feb 2007 13:52

Re: MySQL ohne Komponenten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab jetzt folgenden Code:
Delphi-Quellcode:
procedure TForm1.BtVTPClick(Sender: TObject);
var
  _myCon: PMySQL;      //unseren Verbindungsdeskriptor
  host, user, pass, db: PChar;      //die Anmeldedaten
  Posts: TPostEntries;
  idAuthor: String;  //zum Zwischenspeichern der Verfasser-ID
  query: PChar;
  _myRes: PMySQL_Res; //hier wird der gesamte Ergebnissatz gespeichert
  _mySubRes: PMySQL_Res; //benötigt, um Autor zu ermmitteln
  _myRow: PMySQL_Row; //enthält den aktuellen Datensatz
  _mySubRow: PMySQL_Row; //benötigt, um Autor zu ermmitteln
  i: Integer;
begin


  //wir werden uns als Root-Benutzer in localhost einloggen, ohne eine
  //bestimmte Datenbank auszuwählen
  host := 'localhost';
  user := 'root';
  pass := 'XXXXX';
  db := 'APITest';

  //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');

  query := 'SELECT * FROM posts ORDER BY id';
  mysql_real_query(_myCon, query, Length(query));

  _myRes := mysql_store_result(_myCon); //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;

    SetLength(Posts, mysql_num_rows(_myRes)); //Posts-Array-Größe auf Anzahl der Datensätze setzen

  for i := 0 to High(Posts) do
  begin
    _myRow := mysql_fetch_row(_myRes);  //Datensatz abholen
    Posts[i].id := StrToInt(_myRow[0]); //ID des Posts ist erstes Feld im Datensatz
    Posts[i].time := _myRow[2];         //Zeitpunkt ist drittes Feld
    Posts[i].text := _myRow[3];         //Text ist viertes Feld

    idAuthor := _myRow[1];
    query := PChar('SELECT name FROM users WHERE id=' + idAuthor);
    _mySubRes := mysql_store_result(_myCon);
    _mySubRow := mysql_fetch_row(_mySubRes);
    Posts[i].author := _mySubRow[0];

    mysql_free_result(_mySubRes);       //Ergebnissatz löschen
  end;
 
  mysql_free_result(_myRes);            //Ergebnissätze löschen

  //zum Schluss wird die Verbindung wieder geschlossen
  mysql_close(_myCon);
end;
Aber wenn ich dann die Ergebnisse abrufen will, bekomme ich nur eine Fehlermeldung, dass eine Zugriffsverletzung vorliegt. :( (siehe Anhang)
Woran liegt das? :(

mkinzler 10. Feb 2007 13:56

Re: MySQL ohne Komponenten
 
Welche Version von MySQL?

Svenkan 10. Feb 2007 13:58

Re: MySQL ohne Komponenten
 
Server Version: 5.0.18-nt

Isses das?
Wenn nich, ma eben schnell bescheidsagen. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 22 von 36   « Erste     12202122 232432     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