Hallo!
Irgendwie komm ich mit dem Abrufen nicht so ganz klar. Datenbank erstellt, Tabeller erstellt und Werte sind auch drin. Das seh ich mit
MySQL-Front.
Ich möchte jetzt die Daten -->komplett aus der Database auslesen in einen Record als Array übergeben und anschließend im stringgrid ausgeben.
Aber ich bekomme entweder nur den Fehler "Acces violation" oder gar keinen Wert! Hier mal mein Verusch:
Meine Tabelle besteht aus: Kartei(sowas wie id), Titel, Autor, ISBN
Delphi-Quellcode:
var
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,xx: Integer;
begin
mysql_select_db(_myCon, '
APITest');
//APItest heißt meine Datenbank
query := '
SELECT * FROM buch';
//hier habe ich doch den kompletten Datensatz ausgewählt!, oder?
mysql_real_query(_myCon,
query, Length(
query));
_myRes := mysql_store_result(_myCon);
//Ergebnismenge 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 (nächste Zeile)
Posts[i].id := StrToInt(_myRow[0]);
//Kartei wird id
Posts[i].time := _myRow[2];
//Titel wird time ---> time, text, author sind vom typ string
Posts[i].text := _myRow[3];
//ISBN wird text
Posts[i].author := _myRow[1];
//Autor wird Author
stringgridcells1[0,i]:=StrToInt(Posts[i].id);
//mein Feld bleibt leider leer --> warum?
mysql_free_result(_mySubRes);
//Ergebnissatz löschen
end;
mysql_free_result(_myRes);
//Ergebnissätze löschen
end;
Ich hoffe ihr habt einen Ansatz für mich. mfg