一、我想用纯delphi 的代码来实现,而不是调用数据库里面的系统表来查询
二、网上查到代码:for   Index:=0   to   DataSet.Fields.Count-1   do 
Dataset.fields.Fields[Index].IsIndexField=true 
begin 
    //这里就是主键了 
end 
可是我在oracle 10G 里面没有测试成功,是不是上面的代码只适用于mssql server (没做测试)
我现在想的就是通过delphi现有的控件来取得主键,比如我发出一个查询: select * from 表名 where 1=2
,我就能通过delphi 的一些代码来取出主键,不知各位有没有什么好的方法,请指点!

解决方案 »

  1.   

    通过IsIndexField属性是否取决于驱动程序中有没有实现
    BTW:为什么不用DBMS系统表,为了DBMS无关?
      

  2.   

    主键是不允许为NULL的也是不允许重复的,你判断一下如果条件select * from table where col is null,如果有记录肯定不是主键了。
      

  3.   


    不是所有数据库都有吧?
    比如access 能取出来吗?
      

  4.   

    sql : exec sp_pkeys 'res_user_temp'
      

  5.   

    别折腾了,没通用的方法,你在网上找的那段代码,碰到复合KEY,多个索引的情况都不好用
    你就在中间层写一个函数来返回指定表的关键字吧,各种数据库获取KEY的方法都不一样,所以不要想着弄一个万能的