假如在数据库db1中有一个表table1(ID[integer],Name[string],sex[string],age[]integer])
我想在delphi里实现当程序运行得时候,首先检查此表存不存在,如果存在得话,把里面的一一数据读出来,
构造一个个记录 Tname = Record,然后动态构建一个链表,把这些记录存入链表里。
求实现得代码。俺在线等待。
我想在delphi里实现当程序运行得时候,首先检查此表存不存在,如果存在得话,把里面的一一数据读出来,
构造一个个记录 Tname = Record,然后动态构建一个链表,把这些记录存入链表里。
求实现得代码。俺在线等待。
Pname =^Tname
Tname = Record
ID: integer;
Name: string;
Sex: string;
Age: integer;
end;procedure GetData;
var
myname: Pname;
begin
with adoquery do
begin
Close;
SQL.Text := 'select * from table1';
Open;
if not IsEmpty then
begin
//开始填充链表
First;
while not eof do
begin
new(myname);
myname^.ID:= FieldByName(ID).AsInteger;
myname^.Name:= FieldByName(Name).AsString;
myname^.Sex:= FieldByName(Sex).AsString;
myname^.Age:= FieldByName(Age).AsInteger;
next;
end;
end;
end;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;
type TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
type
plink=^Tname;
Tname=record
ID: integer;
Name: string;
Sex: string;
Age: integer;
next:plink;
end;
var link:plink;
{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
var
tempp,p:plink;
begin
with adoquery1 do
begin
Close;
SQL.Text := 'select * from table1';
Open; if not IsEmpty then
begin
//开始填充链表
First; while not eof do
begin
new(tempp);
tempp^.ID:= FieldByName('ID').AsInteger;
tempp^.Name:= FieldByName('Name').AsString;
tempp^.Sex:= FieldByName('Sex').AsString;
tempp^.Age:= FieldByName('Age').AsInteger;
tempp^.next:=nil;
if link=nil then //如果链表为空表
begin
new(link); //创建链表
link:=tempp;
end
else //如果链表不为空
begin
p:=link;
while p^.next<>nil do //找表尾
p:=p^.next;
p^.next:=tempp; //将新节点添加到表尾
end;
next;
end;
end;
listbox1.Clear; //清列表框
p:=link;
repeat //遍历列表,将所有节点数据域中的数据赋给listbox1的items属性
listbox1.Items.Add(inttostr(p^.ID)+p^.Name+p^.sex+inttostr(p^.age));
p:=p^.next;
until p=nil;end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
link:=nil;
end;end.