如何得到表的主键名称(字段名称)

king_Cai

Unregistered / Unconfirmed
GUEST, unregistred user!
如何得到表的主键名称(字段名称)?
 
C

curioussea

Unregistered / Unconfirmed
GUEST, unregistred user!
Table1.GetFieldNames
 
G

gdtkd

Unregistered / Unconfirmed
GUEST, unregistred user!
select name from syscolumns where object_name(id) = "table1" 
 
K

kingdeezj

Unregistered / Unconfirmed
GUEST, unregistred user!
不知道你的是什么数据库?
 
K

king_Cai

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库是Informix
想从Delphi中寻求答案
 
S

sundart

Unregistered / Unconfirmed
GUEST, unregistred user!
TField.FieldName
 
Z

zxb200

Unregistered / Unconfirmed
GUEST, unregistred user!
得到表字段名:
var list1:tstrings;
Table1.GetFieldNames(list1);
list1列表即為該表字段名。
關于得到主鍵再研究一下。
 
B

blueboy

Unregistered / Unconfirmed
GUEST, unregistred user!
无解。
如果不访问系统表,只用delphi的函数或方法等得不到。[:)]
 
L

lang_kkl

Unregistered / Unconfirmed
GUEST, unregistred user!
我从前作的一个程序,动态选择表格,当选择一个表格时
得到该表的所有索引(包括主健)及该索引对应的字段。

procedure TForm.cbxSourceTableChange(Sender: TObject); //选择表格时得到索引及字段
begin
...
tblSource.Active := false;
tblSource.IndexName := '';
tblSource.TableName := cbxSourceTable.Items[cbxSourceTable.itemindex];
//tblSource.GetIndexNames(cbxIndexName.Items);
tblSource.IndexDefs.Update;

for i := 0 to tblSource.IndexDefs.Count - 1 do
begin
cbxIndexName.Items.Add(inttostr(i) + '-' + tblSource.IndexDefs.Name);
cbxIndexField.Items.Add(tblSource.IndexDefs.Fields);
// tblSource.Active := true;
end;
end;

procedure TForm.cbxIndexnameChange(Sender: TObject); //用户选择索引时判断索引类型

begin
//将BDE识别的索引显示出来
cbxIndexField.ItemIndex := cbxIndexName.ItemIndex; //显示该索引对应字段
edtIndexType.Text := '';
if ixPrimary in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + '主健' + ';';
if ixUnique in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + '唯一性索引' + ';';
if ixDescending in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + '降序' + ';';
if ixCaseInsensitive in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + '不区分大小写' + ';';
if ixExpression in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + 'dBase关键字索引' + ';';
if ixNonMaintained in DataModule2.tblSource.IndexDefs[cbxIndexName.ItemIndex].Options then
edtIndexType.Text := edtIndexType.Text + '自动维护索引' + ';';

if edtIndexType.Text = '' then
edtIndexType.Text := edtIndexType.Text + '一般索引' + ';';
end;
 
P

pp虫

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i:integer;
begin
Table1.Active := False;
Table1.Exclusive := True;
Table1.IndexDefs.Update;
for i:=0 to Table1.IndexDefs.Count-1 do
begin
if ixPrimary in Table1.IndexDefs.Options then
begin
Memo1.Lines.Add('主键名称:'+Table1.indexDefs[0].Name);
Memo1.Lines.Add('主键字段:'+Table1.IndexDefs[0].Fields );
end;
end;
end;
 
Z

zhumoo

Unregistered / Unconfirmed
GUEST, unregistred user!
听课
 
B

BigFan

Unregistered / Unconfirmed
GUEST, unregistred user!
利用ADO的原生对象可以做到你的要求,请看一下李维的《ADO/MTS/COM+高级程序设计篇》
 
L

lang_kkl

Unregistered / Unconfirmed
GUEST, unregistred user!
有些数据库主健可能显示为ixUnique
 
Z

zxb200

Unregistered / Unconfirmed
GUEST, unregistred user!
用SQl SERVER自帶的系統存儲過程:
exec sp_helpindex st_in
可查詢得st_in表的主鍵或索引名及字段名
 
H

hbezwwl

Unregistered / Unconfirmed
GUEST, unregistred user!
楼上的,数据库是informix,
 
P

Pipi.

Unregistered / Unconfirmed
GUEST, unregistred user!
ADO:
var 
ds:TADODataSet;
ds:=TADODataSet.Create(Application);
ADOConnection1.OpenSchema(adSchemaPrimaryKeys,EmptyParam,EmptyParam,ds)

ds的每行的 COLUMN_NAME 列加起来就是全部primary key了
 
V

vickymade

Unregistered / Unconfirmed
GUEST, unregistred user!
Table1.GetFieldNames
 
A

akaiwei

Unregistered / Unconfirmed
GUEST, unregistred user!
关注!
 
K

king_Cai

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢大家
 
K

king_Cai

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.

posted on   癫狂编程  阅读(584)  评论(0编辑  收藏  举报

编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2017-09-18 对delphi中的数据敏感控件的一点探索

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
好的代码像粥一样,都是用时间熬出来的
点击右上角即可分享
微信分享提示