Einzelnen Beitrag anzeigen

Lich

Registriert seit: 17. Aug 2006
43 Beiträge
 
#20

Re: Probleme mit MySQL unter Delphi

  Alt 21. Aug 2006, 09:06
Hab mal dieses Tutorial probiert, wenn ich jetzt versuche nen Datensatz auszuwählen, bekomm ich folgenden Fehler: Zugriffsverletzung bei Adresse 00D14ED4 im Modul 'libmysql.dll'. Lesen von Adresse 0020017B.

>>>Dieses<<<

Was ist da nu wieder falsch?

Hier ma mein Quellcode:

Zitat:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
B_Verbinden: TButton;
Memo1: TMemo;
procedure B_VerbindenClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;

type
TPostEntry = record
id: Integer;
gruppe: String[50];
end;

TPostEntries = Array[0..1] of TPostEntry;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure MakeTables(_myCon: PMySQL);
var
query: PChar;
begin
mysql_real_query(_myCon, 'CREATE TABLE posts(id int, author int, date datetime, entry text)', Length(query));
mysql_real_query(_myCon, 'CREATE TABLE users(id int, name varchar(50), pass varchar(50))', Length(query));
end;

procedure TForm1.B_VerbindenClick(Sender: TObject);

var
Posts: TPostEntries;
_myCon: PMySQL;
query, host, user, pass, db: PChar;
idAuthor: String; //zum Zwischenspeichern der Verfasser-ID
_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
host := 'fs02';
user := 'daniel';
pass := 'daniel';
db := 'Daniel';

memo1.text := '';

_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 gruppen 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;

for i := 0 to 1 do
begin
_myRow := mysql_fetch_row(_myRes); //Datensatz abholen
//Posts[i].id := InttoStr(_myRow[0]); //ID des Posts ist erstes Feld im Datensatz
Posts[i].gruppe := _myRow[1]; //Zeitpunkt ist drittes 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];}

memo1.Text := memo1.text + ' ' + Posts[i].gruppe;

mysql_free_result(_mySubRes); //Ergebnissatz löschen
end;

//zum Schluss wird die Verbindung wieder geschlossen
mysql_close(_myCon);
end;

end.
  Mit Zitat antworten Zitat