Thema: Delphi MySQL ohne Komponenten

Einzelnen Beitrag anzeigen

Manta12

Registriert seit: 17. Feb 2010
3 Beiträge
 
#317

Re: MySQL ohne Komponenten

  Alt 17. Feb 2010, 22:51
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
  Mit Zitat antworten Zitat