• --oracle:   
  • --查询某个表中的字段名称、类型、精度、长度、是否为空   
  • select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE    
  • from user_tab_columns    
  • where table_name ='YourTableName'  
  • --查询某个表中的主键字段名   
  • select col.column_name    
  • from user_constraints con,  user_cons_columns col    
  • where con.constraint_name = col.constraint_name    
  • and con.constraint_type='P'    
  • and col.table_name = 'YourTableName'  
  • --查询某个表中的外键字段名称、所引用表名、所应用字段名   
  • select distinct(col.column_name),r.table_name,r.column_name    
  • from    
  • user_constraints con,   
  • user_cons_columns col,    
  • (select t2.table_name,t2.column_name,t1.r_constraint_name    
  •  from user_constraints t1,user_cons_columns t2    
  •  where t1.r_constraint_name=t2.constraint_name    
  •  and t1.table_name='YourTableName'  
  •  ) r    
  • where con.constraint_name=col.constraint_name    
  • and con.r_constraint_name=r.r_constraint_name    
  • and con.table_name='YourTableName'    
  • --SQLServer中的实现:   
  • --字段:   
  • SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable    
  • FROM systypes t,syscolumns c    
  • WHERE t.xtype=c.xtype    
  • AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName')    
  • ORDER BY c.colid   
  •   
  • --主键(参考SqlServer系统存储过程sp_pkeys):   
  • select COLUMN_NAME = convert(sysname,c.name)                  
  • from                                                          
  • sysindexes i, syscolumns c, sysobjects o                      
  • where o.id = object_id('[YourTableName]')                     
  • and o.id = c.id                                               
  • and o.id = i.id                                               
  • and (i.status & 0x800) = 0x800                                
  • and (c.name = index_col ('[YourTableName]', i.indid,  1) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  2) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  3) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  4) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  5) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  6) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  7) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  8) or        
  •      c.name = index_col ('[YourTableName]', i.indid,  9) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 10) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 11) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 12) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 13) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 14) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 15) or        
  •      c.name = index_col ('[YourTableName]', i.indid, 16)          
  •      )   
  •   
  • --外键:   
  • select t1.name,t2.rtableName,t2.name    
  • from    
  • (select col.name, f.constid as temp    
  •  from syscolumns col,sysforeignkeys f    
  •  where f.fkeyid=col.id    
  •  and f.fkey=col.colid    
  •  and f.constid in    
  •  ( select distinct(id)     
  •    from sysobjects    
  •    where OBJECT_NAME(parent_obj)='YourTableName'    
  •    and xtype='F'    
  •   )    
  •  ) as t1 ,    
  • (select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp    
  •  from syscolumns col,sysforeignkeys f    
  •  where f.rkeyid=col.id    
  •  and f.rkey=col.colid    
  •  and f.constid in    
  •  ( select distinct(id)    
  •    from sysobjects    
  •    where OBJECT_NAME(parent_obj)='YourTableName'    
  •    and xtype='F'    
  •  )    
  • as t2    
  • where t1.temp=t2.temp  
  • ------Access
  • 所有表清单
  •  conn.Open();
        dt= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
  • 表结构
  • conn.Open();

                    dtColumnsInfo = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, strTableName,null });

  •  

    posted on 2008-12-03 15:20  嘿 上路  阅读(2502)  评论(0编辑  收藏  举报