Wyswietlanie zawartosci tabeli MySql

0

Witam,

jak można wyświetlić rekordy bazy danych MySql w ListView, bo moim sposobem coś nie idzie ...

procedure TForm1.Button5Click(Sender: TObject);
var
i : Integer;
ListItem : TListItem;
begin
ListView.Items.Clear;

SQL.CommandText := 'SELECT * FROM users';
SQL.ExecSQL(True);
SQL.Open;

for i := 1 to SQL.RecordCount do
begin
{ dodaj kolejne wartości }
ListItem := ListView.Items.Add;
ListItem.Caption := IntToStr(SQL.FieldValues['id']);
ListItem.SubItems.Add(SQL.FieldValues['login']);
ListItem.SubItems.Add(SQL.FieldValues['password']);
listItem.SubItems.Add(SQL.FieldValues['time']);
ListItem.SubItems.Add(SQL.FieldValues['points']);
SQL.Next;
end;

SQL.Close;
end;

> 
> Dostaję bład : SQL Mapping Error ;( 
> Albo że tabela już istnieje :( 
> 
> prośże o pomoc ... bo trzyma mnie to w martwym pkt. :( 
> 
> pozdrawiam 
> 
0

Ja robie np tak...
Fragment mojego kodu...

MainForm.Query.CommandText :=Format('SELECT * FROM `%s` AS wynik WHERE data = "%s"', [Tabela, data]);
      MainForm.Query.Open;
     
      for J := 1 to MainForm.Query.RecordCount do
        begin
          ListItem := ListViewAktualne.Items.Add;
          ListItem.Caption := IntToStr(J);
          ListItem.SubItems.Add((MainForm.Query.FieldValues['a']));
          ListItem.SubItems.Add((MainForm.Query.FieldValues['b']));
          ListItem.SubItems.Add((MainForm.Query.FieldValues['c']));
          MainForm.Query.Next;
        end;
    MainForm.Query.Close;
0

wywal te linie:

SQL.ExecSQL(True);

0

Siema

Zminiłem troszkę kodzik ale dalej jest kłopot :
mianowicie dostaje bład bardzo dziwaczny :
user image

procedure TForm1.Button5Click(Sender: TObject);
var
 i : Integer;
  ListItem : TListItem;
  nazwa : string;
begin
  nazwa := 'users';
  ListView.Items.Clear;
  SQL.CommandText := Format('SELECT * FROM "%s"',[nazwa]);
  //SQL.ExecSQL(True);
  SQL.Open;

  for i := 1 to SQL.RecordCount do
  begin

    ListItem := ListView.Items.Add;
    ListItem.Caption := IntToStr(SQL.FieldValues['id']);
    ListItem.SubItems.Add(SQL.FieldValues['login']);
    ListItem.SubItems.Add(SQL.FieldValues['password']);
    ListItem.SubItems.Add(SQL.FieldValues['time']);
    ListItem.SubItems.Add(SQL.FieldValues['points']);
    SQL.Next;
  end;

  SQL.Close;
end;

Proszę o pomoc :)
Pozdrawiam,

0

dla mnie ten kod jest tragiczny :) ale skoro sie uparles to sprobuj tak:
SQL.CommandText := Format('SELECT * FROM %s',[nazwa]);

A tu mozesz poczytac o funkcji format:
Format

W dodatku jesli cchesz cos wyswietlac z bazy to lepiej uzyc czegos takiego

while not SQL.Eof do
begin
... instrukcje 
end
0

Zminiłem tak jak mówiłeś ale niestesty pojawia się bład Mappingu .. " error mapping failed"
A na necie mało co o tym piszą jak to rozwiązać :(

0

Rozwiązanie ode mnie:

procedure TForm1.Button5Click(Sender: TObject);
var
i : Integer;
ListItem : TListItem;
nazwa, query : string;
begin
nazwa := 'users';
ListView.Items.Clear;
Query := 'select * from ' + nazwa;
//lub jak wolisz z funkcją format
//Query := 'select * from %s';
//Query := Format(Query, [nazwa]);

SQL.CommandText := Query;
SQL.Open;
while not SQL.Eof do begin
ListItem := ListView.Items.Add;
ListItem.Caption := SQL.FieldByName['id'].AsString;
ListItem.SubItems.Add(SQL.FieldByName['login'].AsString);
ListItem.SubItems.Add(SQL.FieldByName['password'].AsString);
ListItem.SubItems.Add(SQL.FieldByName['time'].AsString);
ListItem.SubItems.Add(SQL.FieldByName['points'].AsString);
SQL.Next;
end;
SQL.Close;
end;
0

Po poprawkach zgodnie z w.w postem, dalej to samo :(
jakies inne propozycje ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1