2

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

我试过这些,但没有用;

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

uyeler = 表

站点 = 列

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

4

1 回答 1

5

你的问题有点不清楚。您询问如何将列数据添加到 a TListBox,但您的代码示例显示了一些关于 的内容ParamByName,看起来您正在尝试为ListBoxSQL 参数分配一个值。

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

如果您尝试TListBox从数据库列填充 a,则需要运行查询,然后循环遍历数据以将列数据添加到您的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;

如果您尝试执行第二个操作(使用 a 中的值填充参数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;
于 2012-08-03T01:22:28.567 回答