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 (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) 主键, b.name 类型, a.length 占用字节数, COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度, isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数, (case when a.isnullable=1 then '√'else '' end) 允许空, isnull(e.text,'') 默认值, isnull(g.[value],'') AS 字段说明 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 order by a.id,a.colorder
SQL SERVER查询表是否存在 select name AS '表名',id AS '表ID',xtype from sysobjects where xtype='U' AND name='你的表名'其中字段xtype的值的含义如下: C:检查约束。 D:默认的约束 F:外键约束 L:日志 P:存储过程 PK:主键约束 RF:复制过滤存储过程 S:系统表格 TR:触发器 (其类型有三种,字段为deltrig,instrig,updtrig,查看其值哪个大于0) U:表格。 UQ:独特的约束。 V:视图 X:被扩展的存储过程查询某表的字段: SELECT a.colid AS '字段顺序',a.[name] AS '字段名',b.[name] As '字段类型',a.length AS '字段长度' FROM syscolumns a, systypes b WHERE a.xtype=b.xtype AND b.[name]<>'sysname' AND a.id=object_id('你的表名') ORDER BY a.colid
取出某数据库所有表的名称:select name from sysobjects 取出某表的所有字段名:select name from syscolumns where id=object_id( '你要查的表名 ') 取出某表的字段的属性名:select type from syscolumns where id = object_id( '你要查的表名 '); 然后用老三类sqlconnection ,sqlcommond,sqldatareader
可以通过访问系统表获得。sqlserver2000直接能看到,2005看不到但是存在。 如上面的sql select name AS '表名 ',id AS '表ID ',xtype from sysobjects where xtype= 'U ' AND name= '你的表名 '
你可以通像访问自己的表一样访问它们,从而去解决你的问题
数据库里面会有相应的系统表如sysobjects
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 (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) 主键,
b.name 类型,
a.length 占用字节数,
COLUMNPROPERTY(a.id,a.name,'PRECISION') as 长度,
isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as 小数位数,
(case when a.isnullable=1 then '√'else '' end) 允许空,
isnull(e.text,'') 默认值,
isnull(g.[value],'') AS 字段说明
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
order by a.id,a.colorder
select name AS '表名',id AS '表ID',xtype from sysobjects where xtype='U' AND name='你的表名'其中字段xtype的值的含义如下:
C:检查约束。
D:默认的约束
F:外键约束
L:日志
P:存储过程
PK:主键约束
RF:复制过滤存储过程
S:系统表格
TR:触发器 (其类型有三种,字段为deltrig,instrig,updtrig,查看其值哪个大于0)
U:表格。
UQ:独特的约束。
V:视图
X:被扩展的存储过程查询某表的字段:
SELECT a.colid AS '字段顺序',a.[name] AS '字段名',b.[name] As '字段类型',a.length AS '字段长度'
FROM syscolumns a, systypes b
WHERE a.xtype=b.xtype AND b.[name]<>'sysname' AND a.id=object_id('你的表名')
ORDER BY a.colid
取出某表的所有字段名:select name from syscolumns where id=object_id( '你要查的表名 ')
取出某表的字段的属性名:select type from syscolumns where id = object_id( '你要查的表名 ');
然后用老三类sqlconnection ,sqlcommond,sqldatareader
如上面的sql
select name AS '表名 ',id AS '表ID ',xtype from sysobjects where xtype= 'U ' AND name= '你的表名 '