知道一个数据库,
如何得知里面有多少个表,每个表的名称是什么?
每个表的字段名是什么,类型是什么?如何编程获取?

解决方案 »

  1.   

    数据库建立 是否可以通过编程实现?
    下面通过sql server 查询分析器生成数据库,如何在程序中实现同样的功能?
    USE master
    GO
    CREATE DATABASE ss
    ON 
    ( NAME = Sales_dat,
       FILENAME = 'd:\saledat.mdf',
       SIZE = 10,
       MAXSIZE = 50,
       FILEGROWTH = 5 )
    LOG ON
    ( NAME = 'Sales_log',
       FILENAME = 'd:\salelog.ldf',
       SIZE = 5MB,
       MAXSIZE = 25MB,
       FILEGROWTH = 5MB )
    GO
      

  2.   

    一个数据库中的用户表:
    select name,id from dbo.sysobjects where xtype='U'一个表有那些列
    select * from syscolumns where id=表的ID --对应sysobjects中的表ID
      

  3.   


    获取数据库中用户表
    select id,name from sysobjects where xtype='u'获取某个表中的字段名和类型
    select A.name,B.name as Type from syscolumns A 
      join systypes B on A.xtype=B.xusertype
      where id = object_id('表名')
      

  4.   

    获取数据库中用户表
    select id,name from sysobjects where xtype='u'获取某个表中的字段名和类型
    select A.name,B.name as Type from syscolumns A 
      join systypes B on A.xtype=B.xusertype
      where id = object_id('表名')
      

  5.   

    我在sql server2000 中新建了一个数据库,使用了
    select id,name from sysobjects where xtype='u'
    发现 系统表 dtproperties 也被读了出来如果用master数据库,则读出的系统表更多,有没有什么办法只读取用户表?
      

  6.   

    select id,name from sysobjects where xtype='u' and status >0
      

  7.   

    ---获取全部表名,字段名和所有相关信息
    SELECT b.name '表名',a.colorder '序号',a.name '字段名',c.name '类型',a.length '长度',a.isnullable '空值',
    a.cdefault '默认值' FROM syscolumns a,sysobjects b,systypes c WHERE a.id=b.id  and b.xtype='u'
    and a.xtype=c.xtype order by b.name,a.colorder------取表名SELECT distinct(b.name) '表名' FROM syscolumns a,sysobjects b,systypes c WHERE a.id=b.id  and b.xtype='u'
    and a.xtype=c.xtype order by b.name
      

  8.   

    还有个更强的语句,是邹建写的SELECT 
     (case when a.colorder=1 then d.name else '' end) N'表名',
     a.colorder 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'占用字节数',
     COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'长度',
     isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'小数位数',
     (case when a.isnullable=1 then '√'else '' end) N'允许空',
     isnull(e.text,'') N'默认值',
     isnull(g.[value],'') AS N'字段说明'
    --into ##txFROM  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  
    order by object_name(a.id),a.colorder
      

  9.   

    select name from syscolumns where id = object_id('表名')
    这样得到的字段名已经重新排序了.
    我不想要自动排序的功能,应该怎样改代码?如:
    表结构:attri  tag  text  dy_1_1  dy_1_3我想得到的结果是:
    attri
    tag
    text
    dy_1_1
    dy_1_3
    但使用以上语句的结果是:  
    attri
    dy_1_1
    dy_1_3
    tag
    text
      

  10.   

    自己回答 呵呵
    order by colorder asc