Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MySQL Abfrage (https://www.delphipraxis.net/69318-mysql-abfrage.html)

chrigu99 13. Mai 2006 13:22


MySQL Abfrage
 
Hi zusammen

Also, ich habe mir eine MySQL-Abfrage zusammengebastelt, welche mir aber beim Ausführen des Programmes (nicht beim kompilieren) einen Fehler ausgibt. Hier der Code:

Delphi-Quellcode:
uses
  ... mysql ...;

    procedure DoTimer (Sender: TObject);

procedure TForm1.DoTimer(Sender: TObject);
var
  _myCon: PMySQL;  
  host, user, pass, db: PChar;
  idAuthor: String;
  count: Integer;
  query: PChar;
  _myRes: PMySQL_Res;
  _myRow: PMySQL_Row;
   error: String;
begin
  host := 'www.fire-pics.ch';
  user := 'root';
  pass := 'XXXXX';
  db := 'firepics2';
  msg1 := 'Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren';
  msg3 := 'Verbindung mit fire-pics.ch-Server hergestellt';

  _myCon := mysql_init(nil);
  if _myCon = nil then
  begin
    ShowBalloon(msg1);
    Exit;
  end;

  //anschließend wird die Verbindung hergestellt
  if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then
  begin
    msg2 := 'Die Verbindung konnte nicht hergestellt werden. Ursache: ' + mysql_error(_myCon);
    ShowBalloon(msg2);
    Exit;
  end;

  ShowBalloon(msg3);

  query := PChar('SELECT uid FROM firepics2_members WHERE username=chrigu99');
  mysql_real_query(_myCon, query, Length(query));

  _myRes := mysql_store_result(_myCon); //alle Datensätze vom Server anfordern
  _myRow := mysql_fetch_row(_myRes);
  idAuthor := _myRow[0];

    error := idAuthor;
    ShowBalloon(error);
    Exit;

  mysql_close(_myCon);
end;
wo liegt da der Fehler?

Grüsse, Chris

mkinzler 13. Mai 2006 13:27

Re: MySQL Abfrage
 
Was für ein Fehler kommt und in welcher zeiel deines Codes?

RWarnecke 13. Mai 2006 13:31

Re: MySQL Abfrage
 
Ich tippe mal, das der Fehler im Bereich der Zeile 20 - 30 kommt oder ? Ist das ein Server der bei Deinem Provider steht ?

chrigu99 13. Mai 2006 13:36

Re: MySQL Abfrage
 
In keiner Zeile des Codes, wie bereits erwähnt tritt der Fehler nicht beim kompilieren auf sondern während des Ausführen des Programmes wenn die Prozedur gestartet wird:

Debugger-Exception
... Exception der Klasse EAccessViolation ... "Zugriffsverletung bei Adresse 10005536 in Modul libmysql.dll. Lesen von Adresse 0000000C" ...

[edit]
ja isses, ich hab n kompletten root-Server
[/edit]

mkinzler 13. Mai 2006 13:44

Re: MySQL Abfrage
 
Ist dort der externe Zugriff auf mysql gestattet? Das ist normalerweise nicht so!

chrigu99 13. Mai 2006 14:12

Re: MySQL Abfrage
 
jep, sonst könnte ich gar nicht verbinden. ach ja, das hab ich vergessen, die verbindung wird einwandfrei hergestellt, es klemmt erst ab der abfrage!

mkinzler 13. Mai 2006 14:20

Re: MySQL Abfrage
 
Versuch mal den username zu Quoten, es handelt sich hierbei ja um einen String.

RWarnecke 13. Mai 2006 14:42

Re: MySQL Abfrage
 
Zitat:

Zitat von chrigu99
Debugger-Exception
... Exception der Klasse EAccessViolation ... "Zugriffsverletung bei Adresse 10005536 in Modul libmysql.dll. Lesen von Adresse 0000000C" ...

So eine ganz dumme Frage, Du hast schon die richtige libmysql.dll im Windows-System32 Verzeichnis oder ? Die libmysql.dll muss schon zur Version des MySQL-Servers passen. Starte doch mal das Programm mit F9 aus der IDE heraus. Dann muss er an der Codezeile halt machen, wo Deine EAccessViolation auftritt.


Zitat:

Zitat von chrigu99
jep, sonst könnte ich gar nicht verbinden. ach ja, das hab ich vergessen, die verbindung wird einwandfrei hergestellt, es klemmt erst ab der abfrage!

Das soll heißen, dass mann mit Deinem Root-User von jedem PC drauf zugreifen kann. Kleiner Tipp am Rande. Wenn es so ist, solltest Du es ändern und Dir einen passenden User anlegen, der nicht so viele Rechte hat wieder Root-User der Datenbank.

mkinzler 13. Mai 2006 14:54

Re: MySQL Abfrage
 
Ich würde sogar den externen Zugriffauf den Server komplett sperren. Zugriff über die datenbank nur über "middle-ware" (PHP usw.) oder über ssh.

chrigu99 13. Mai 2006 16:34

Re: MySQL Abfrage
 
das mit dem root-benutzer iss mir schon bewusst, ist jetzt nur für testzwecke, dachte erst dass es an sowas liegen könnte.

die dll-version ist von winem win32-mysql server in der version 5.0.20, der server auf dem server ( lol ) ist linux und version 5.0.15. kann das nen unterschied machen? wenn ja. wo finde ich dll's für den linux-server? der hat ja diese so-dateien und keine dll's?

grüsse

[edit]
mkinzler:
Versuch mal den username zu Quoten, es handelt sich hierbei ja um einen String.

was meinst du damit genau? :?
[/edit]

[edit2]
jaa, daran lag es, am teil mit username=chrigu99 hat er sich aufgehängt... Danke für den Hinweis!!
[/edit2]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.

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