AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Schwerer Fehler mit libmysql.dll
Thema durchsuchen
Ansicht
Themen-Optionen

Schwerer Fehler mit libmysql.dll

Ein Thema von malibubu · begonnen am 8. Okt 2004 · letzter Beitrag vom 10. Jun 2005
 
malibubu

Registriert seit: 8. Okt 2004
4 Beiträge
 
#1

Schwerer Fehler mit libmysql.dll

  Alt 8. Okt 2004, 15:16
Hallo zusammen,

ich habe mir ein kleiner Programm geschrieben, mit dem ich von einen MySQL-Server einen Datensatz auslesen möchte.
Dazu benutze ich die wohl bekannte "mysql.pas". Die "libmysql.dll" ist auch Im System32-Verzeichnis.
Hier erstmal der Quellcode um zu vermeiden, dass ich einen Programmierfehler gemacht habe:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
 var
   _myCon: PMySQL;
    host, user, pass, db: PChar;
   _mySubRes: PMySQL_Res;
   _mySubRow: PMySQL_Row;
    posts, userna: string;
    query: PChar;
begin
  host := 'MEIN_SERVER';
  user := 'DATENBANK';
  pass := 'PASSWORT';
  db := 'ftpserver';
  userna := 'test';

  _myCon := mysql_init(nil);
  if _myCon = nil then
  begin
    ShowMessage('Fehler beim Verbindungsaufbau.');
    mysql_close(_myCon);
    Exit;
  end;

  if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then
  begin
    ShowMessage('Fehler beim Verbindungsaufbau.');
    mysql_close(_myCon);
    Exit;
  end;

   mysql_select_db(_myCon, db);

   query := PChar('SELECT name FROM users WHERE name=' + userna);
   mysql_real_query(_myCon, query, Length(query));
   _mySubRes := mysql_store_result(_myCon);
   _mySubRow := mysql_fetch_row(_mySubRes);
   posts := _mySubRow[1];
   mysql_free_result(_mySubRes);
   Label1.Caption := posts;
   mysql_close(_myCon);
end;

end.
So, lasse ich das Programm so laufen, bekomme ich gleich folgende Fehlermeldung:
"Im Prejekt Projekt1 ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 10006C36 in Modul 'libmysql.dll''. Lesen von Adresse 00000014. Prozess wurde Angehalten...."

Um zu schauen, wo der Fehler liegt, habe ich noch folgenden Code eingesetzt (vor _mySubRow := mysql_fetch_row(_mySubRes); ) :
Delphi-Quellcode:
   if _mySubRes = nil then
     begin
      ShowMessage('Nicht gefunden');
      mysql_close(_myCon);
      Exit;
     end;
Dann macht es keine Probleme, also scheint es wohl an _mySubRow := mysql_fetch_row(_mySubRes); zu liegen.

Das Lustige ist, dass der Datensatz mit 1er Stelle "test" jedoch besteht...

Hat jemand eine Lösung? Danke im Voraus.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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