怎么把本机上的所有数据库名及其下的各表名显示到treeview中?
如题,用qt连接上了数据库,然后怎么用qt获取数据库中的表名,并将表名和表中字段显示在treeview中,要将所有的数据库名字显示成树状列表..数据库名是父节点..然后是...
如题,用qt连接上了数据库,然后怎么用qt获取数据库中的表名,
并将表名和表中字段显示在treeview中,
要将所有的数据库名字显示成树状列表..
数据库名是父节点..
然后是表名..再然后是字段名.. 展开
并将表名和表中字段显示在treeview中,
要将所有的数据库名字显示成树状列表..
数据库名是父节点..
然后是表名..再然后是字段名.. 展开
展开全部
您好,procedure TForm1.Button1Click(Sender: TObject);
var
sql,str,tbl:string;
NodeD,NodeT: TTreeNode;
begin
sql:='select name from master..sysdatabases order by name';
ADOQ1.Close;
ADOQ1.SQL.Clear;
ADOQ1.SQL.Add(sql);
ADOQ1.Open;
while not ADOQ1.Eof do
begin
NodeD:=Treeview.Items.Add(nil,ADOQ1.FieldByName('name').AsString);
NodeT:=NodeD;
str:=ADOQ1.FieldByName('name').AsString;
tbl:='';
sql:='select A.name TBL,B.name FLD from '+str+'..sysobjects A,'+str+'..syscolumns B where A.id=B.id AND A.xtype=''U'' order by A.Name,B.Colorder';
ADOQ2.Close;
ADOQ2.SQL.Clear;
ADOQ2.SQL.Add(sql);
ADOQ2.Open;
while not ADOQ2.Eof do
begin
if ADOQ2.FieldByName('TBL').AsString=tbl then
begin
TreeView.Items.AddChild(NodeT,ADOQ2.FieldByName('FLD').AsString);
end
else
begin
tbl:=ADOQ2.FieldByName('TBL').AsString;
NodeT:=TreeView.Items.AddChild(NodeD,tbl);
TreeView.Items.AddChild(NodeT,ADOQ2.FieldByName('FLD').AsString);
end;
ADOQ2.Next;
end;
ADOQ1.Next;
end;
end;
在form上放两个ADOQuery: ADOQ1,ADOQ2,链接好数据库,再放一个按钮,以上是个按钮事件,已经调试通过了,没有问题。
var
sql,str,tbl:string;
NodeD,NodeT: TTreeNode;
begin
sql:='select name from master..sysdatabases order by name';
ADOQ1.Close;
ADOQ1.SQL.Clear;
ADOQ1.SQL.Add(sql);
ADOQ1.Open;
while not ADOQ1.Eof do
begin
NodeD:=Treeview.Items.Add(nil,ADOQ1.FieldByName('name').AsString);
NodeT:=NodeD;
str:=ADOQ1.FieldByName('name').AsString;
tbl:='';
sql:='select A.name TBL,B.name FLD from '+str+'..sysobjects A,'+str+'..syscolumns B where A.id=B.id AND A.xtype=''U'' order by A.Name,B.Colorder';
ADOQ2.Close;
ADOQ2.SQL.Clear;
ADOQ2.SQL.Add(sql);
ADOQ2.Open;
while not ADOQ2.Eof do
begin
if ADOQ2.FieldByName('TBL').AsString=tbl then
begin
TreeView.Items.AddChild(NodeT,ADOQ2.FieldByName('FLD').AsString);
end
else
begin
tbl:=ADOQ2.FieldByName('TBL').AsString;
NodeT:=TreeView.Items.AddChild(NodeD,tbl);
TreeView.Items.AddChild(NodeT,ADOQ2.FieldByName('FLD').AsString);
end;
ADOQ2.Next;
end;
ADOQ1.Next;
end;
end;
在form上放两个ADOQuery: ADOQ1,ADOQ2,链接好数据库,再放一个按钮,以上是个按钮事件,已经调试通过了,没有问题。
追问
您说的form是指widget吗?第四行的NodeD,NodeT: TTreeNode中冒号应给是逗号不?二个ADOQuery: ADOQ1,ADOQ2有什么用呀?本人菜鸟,谢谢哈~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询