现在公司要做一个程序,
用的是ADO的数据库引擎,
现在想通过ADO或者DAO来取得Access和MSSql数据库表的结构信息(主要是表的主键字段,字段名称,字段描述)
请各位大侠帮帮忙

解决方案 »

  1.   

    Close;
              SQL.Text := Format('SELECT '
              + '  a.name FieldName, b.name datatype, a.length, a.prec, a.scale, a.isnullable , '
              + '  isnull(e.text,''(_null_)'') defaultvalue  FROM syscolumns a '
              + '  left join systypes b on a.xtype=b.xusertype '
              + '  inner join sysobjects d on a.id=d.id and d.xtype=''U'' and d.name<>''dtproperties'' '
              + '  left join syscomments e on a.cdefault=e.id '
              + '  left join sysproperties g on a.id=g.id and a.colid=g.smallid '
              + '  where d.name = ''%s'' ', [NewDB.Strings[i]]);
              open;
      

  2.   

    ms-sqlserver
    exec sp_pkeys tablename 取主键字段列取表的字段信息
    Close;
              SQL.Text := Format('SELECT '
              + '  a.name FieldName, b.name datatype, a.length, a.prec, a.scale, a.isnullable , '
              + '  isnull(e.text,''(_null_)'') defaultvalue  FROM syscolumns a '
              + '  left join systypes b on a.xtype=b.xusertype '
              + '  inner join sysobjects d on a.id=d.id and d.xtype=''U'' and d.name<>''dtproperties'' '
              + '  left join syscomments e on a.cdefault=e.id '
              + '  left join sysproperties g on a.id=g.id and a.colid=g.smallid '
              + '  where d.name = ''%s'' ', [yourtablename]);
              open;
      

  3.   

    楼上的没有看清我的问题,
    要求是通过ADO或者DAO来取得表结构信息
    如果对于Access数据库就不灵了
      

  4.   

    const SqlStr='SELECT d .name N''表名'', a.name N''字段名'', (CASE WHEN COLUMNPROPERTY(a.id, '+
                 'a.name, ''IsIdentity'') = 1 THEN ''√'' ELSE '''' END) N''标识'', (CASE WHEN '+
                 '(SELECT COUNT(*) FROM sysobjects '+
                 'WHERE (name IN '+
                 '(SELECT name FROM sysindexes '+
                 'WHERE (id = a.id) AND (indid IN '+
                 '(SELECT indid FROM sysindexkeys '+
                 'WHERE (id = a.id) AND (colid IN '+
                 '(SELECT colid FROM syscolumns '+
                 'WHERE (id = a.id) AND (name = a.name))))))) AND '+
                 '(xtype = ''PK'')) > 0 THEN ''√'' ELSE '''' END) N''主键'', b.name N''类型'', '+
                 'a.length N''长度'', (CASE WHEN a.isnullable = 1 THEN ''√'' ELSE '''' END) '+
                 'N''允许空'' '+
                 'FROM syscolumns a LEFT JOIN '+
                 'systypes b ON a.xtype = b.xusertype INNER JOIN '+
                 'sysobjects d ON a.id = d .id AND d .xtype = ''U'' AND d .name <> ''dtproperties'' LEFT '+
                 'JOIN '+
                 'syscomments e ON a.cdefault = e.id ';
      

  5.   

    楼上的都没有看清我的要求啊
    要求是通过ADO或者DAO来取得表结构信息
    如果对于Access数据库就不灵了