是否能通过 语句 来 进行 查询 数据库所有的表名呢?
如果可以 请问 该怎么写??C#的···  

解决方案 »

  1.   

    http://topic.csdn.net/t/20051220/12/4469984.html
      

  2.   

    可以,数据库有一个表sysobjects对数据库的所有对数据库的所有对象进行管理。你看看就知道怎么弄了。
      

  3.   

    select name from sysobjects where xtype='u'
      

  4.   

    Select   sysobjects.Name   '表名',   syscolumns.Name   '列名'   From   sysobjects   
      Inner   Join   syscolumns   
      On   sysobjects.ID   =   syscolumns.ID   
      Where   sysobjects.xtype='U'这里的‘表名’‘列名’ 是 变量  还是 具体的值?
      

  5.   

    select   sysobjects.name   as   数据表名称,   syscolumns.name   as   字段名称,   
      systypes.name   as   字段类型,syscolumns.length   as   字段长度   
      from   sysobjects,syscolumns,systypes   
      where   sysobjects.id   =   syscolumns.id   
      and   syscolumns.xtype   =   systypes.xtype   
      order   by   sysobjects.name
      

  6.   

    这只是个SQL语句,Select Name FROM SysObjects Where XType='U'
      

  7.   

    运行结果 是 没有·sysobjects. ···
      

  8.   

    我想是语句写好以后 不管未来 删除多张表 还是添加多张表 都可以 直接反应出来如果用  select   sysobjects.name   as   数据表名称,   syscolumns.name   as   字段名称,   不是 要 自己写 数据库名称了么 ·· 那跟自己修改 不是 没有什么区别了么?
      

  9.   

    你把你写的sql语句帖出来看看开始上面回复给你的那条不行吗?
      

  10.   

    该条语句查询返回所有的用户表select * from sysobjects where xtype='u'
    sysobjects
    在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。列名 数据类型 描述 
    name sysname 对象名。 
    Id int 对象标识号。 
    xtype char(2) 对象类型。可以是下列对象类型中的一种: 
    C = CHECK 约束
    D = 默认值或 DEFAULT 约束
    F = FOREIGN KEY 约束
    L = 日志
    FN = 标量函数
    IF = 内嵌表函数
    P = 存储过程
    PK = PRIMARY KEY 约束(类型是 K)
    RF = 复制筛选存储过程
    S = 系统表
    TF = 表函数
    TR = 触发器
    U = 用户表
    UQ = UNIQUE 约束(类型是 K)
    V = 视图
    X = 扩展存储过程
     
      

  11.   

    2000 我在 ACESS 跟 oracle 里 做 代码测试检查
    select * from sysobjects where xtype='u'  的 时候 提示 是 sysobjects 没有检查到该表名
      

  12.   

    这个是sql2005的查询用户表SELECT       
      表名=case   when   a.colorder=1   then   d.name   else   ''   end,       
      字段序号=a.colorder,     
      字段名=a.name,       
      标识=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'   else   ''   end,       
      主键=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in   (     SELECT   name   FROM   sysindexes   WHERE   indid   in(       SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=a.colid     )))   then   '√'   else   ''   end,       
      类型=b.name,       
      占用字节数=a.length,       
      长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),       
      小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),       
      允许空=case   when   a.isnullable=1   then   '√'else   ''   end,       
      默认值=isnull(e.text,''),       
      字段说明=isnull(g.[value],'')     
          
      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   sys.extended_properties   g   on   d.id=g.major_id   and   a.colid=g.minor_id         
      --取消下面的注释则只返回有描述的字段     
      --where   g.name='MS_Description'     
          
      order   by   a.id,a.colorder
      

  13.   

    这个是sql 2000查用户表的语句SELECT     
      表名=case   when   a.colorder=1   then   d.name   else   ''   end,   
      表说明=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end,   
      字段序号=a.colorder,   
      字段名=a.name,   
      标识=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end,   
      主键=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   and   name   in   (   
      SELECT   name   FROM   sysindexes   WHERE   indid   in(   
      SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=a.colid   
      )))   then   '√'   else   ''   end,   
      类型=b.name,   
      占用字节数=a.length,   
      长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),   
      小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),   
      允许空=case   when   a.isnullable=1   then   '√'else   ''   end,   
      默认值=isnull(e.text,''),   
      字段说明=isnull(g.[value],'')   
      FROM   syscolumns   a   
      left   join   systypes   b   on   a.xusertype=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       
      left   join   sysproperties   f   on   d.id=f.id   and   f.smallid=0   
      --where   d.name='要查询的表'         --如果只查询指定表,加上此条件   
      order   by   a.id,a.colorder 
      

  14.   

    为什么 我的数据库 一直提示我 找不到 sysobjects    这个是什么原因?
      

  15.   

    oracle 的话你还是看看http://blog.csdn.net/azrael6619/archive/2008/12/21/3573820.aspx吧
      

  16.   

    select   [Name]   from   MSysObjects   where   type=1   
    access版的 
      

  17.   

    sysobjects这是系统表 不可能没有 你在master数据库下试试 如果能查 那就说明你建的数据库有问题
      

  18.   

    可以了·· 不过有多张表 我如果只提取 用户表 呢?
     如何查用户表  type='u'  这样写 就 说我错了···
      

  19.   

    应该是 select * from sysobjects where xtype='u' 的
      

  20.   

    是对的 ··你这个 应该是 对应 SQL的··
    我表写的 11  22  随便打的 ·
      

  21.   

    写出来了··  ·
    我现在 贴出 完整的 ··select [name] from MSysObjects where type=1  and flags = 0
      

  22.   

    那就把type改成 0 , 2 , 3 什么的试一下  
      access 的资料很少  都不知道 这些type是什么意思
    要不 你写 select [type] from MSysObjects 看看
      

  23.   

    谢谢了· · · 
    Aslanggand  everybody````
      

  24.   

    select * from sys.tables where type='U'
      

  25.   

    select name from sys.tables
    可以得到所在数据库下面的所有表名