怎么把本机上的所有数据库名及其下的各表名显示到treeview中?

如题,用qt连接上了数据库,然后怎么用qt获取数据库中的表名,并将表名和表中字段显示在treeview中,要将所有的数据库名字显示成树状列表..数据库名是父节点..然后是... 如题,用qt连接上了数据库,然后怎么用qt获取数据库中的表名,
并将表名和表中字段显示在treeview中,
要将所有的数据库名字显示成树状列表..
数据库名是父节点..
然后是表名..再然后是字段名..
展开
 我来答
山水阿锐
2015-04-22 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
您好,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,链接好数据库,再放一个按钮,以上是个按钮事件,已经调试通过了,没有问题。
追问
您说的form是指widget吗?第四行的NodeD,NodeT: TTreeNode中冒号应给是逗号不?二个ADOQuery: ADOQ1,ADOQ2有什么用呀?本人菜鸟,谢谢哈~
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式