我在数据库中使用MYDAC组件创建了一个表并添加了数据。我如何从表中提取这些值?

我尝试了这些,但它们没有起作用;

 MyQuery1.Close;
 MyQuery1.SQL.Text :='SELECT * FROM uyeler ORDER BY site';
 Listbox1.Items.Add(MyQuery1.ParamByName('site').AsString);
 MyQuery1.Execute;


uyeler =表格

网站=列

编者注:基于对已接受答案的评论,此问题询问如何使用查询列中返回的数据填充TListBox

最佳答案

您的问题还不清楚。您询问如何将列数据添加到TListBox,但是您的代码示例显示了有关ParamByName的内容,这看起来像是您试图将ListBox值分配给SQL参数。

注意:根据对此回复的评论,问题得以澄清。第一个代码回答了这个问题;我将第二个示例留给以后的读者使用,因为它已经写好了。

如果尝试从数据库列填充TListBox,则需要运行查询,然后遍历数据以将列数据添加到TListBox。 (当您仅要使用SELECT *列时,也不应使用site;这意味着多余的数据将从数据库发送到应用程序,而这些数据将永远不会被使用并最终被丢弃。 )

这应该可以帮助您入门:

MyQuery1.Close;
MyQuery1.SQL.Text := 'SELECT site FROM uyeler ORDER BY site';
try
  MyQuery1.Open;
  ListBox1.Items.Clear;
  while not MyQuery1.Eof do
  begin
    ListBox1.Items.Add(MyQuery1.Fields[0].AsString);
    MyQuery1.Next;
  end;
finally
  MyQuery1.Close;
end;


如果您要进行第二次操作(使用TListBox中的值填充参数),这应该会有所帮助:

// to shorten typing of long lines
var
  Site: string;
begin
  if ListBox1.ItemIndex <> -1 then
  begin
    MyQuery1.Close;
    MyQuery1.SQL.Clear;
    MyQuery1.SQL.Add('SELECT Column1, Column2, site FROM uyeler');
    MyQuery1.SQL.Add('WHERE site = :siteval ORDER BY site');
    Site := ListBox1.Items[ListBox1.ItemIndex];
    MyQuery1.ParamByName('siteval').AsString := Site;
    MyQuery1.Open;
    try
      // Use the database rows here
    finally
      MyQuery1.Close;
    end;
  end;
end;

关于delphi - 用数据库查询中的列填充TListBox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11787998/

10-12 00:29
查看更多