15 个解决方案
#1
???
通过下面SQL得到当前数据库中表名
select name from sysobjects where xtype='u'
当然存储过程exec sp_tables也能得到,只要比系统表去掉就可以了
取字段的根据表名tablename
用
'select name from syscolumns where id=(select id from sysobjects where name='+tablename+')'
当然存储过程EXEC sp_columns @table_name = 'tablename'也能得到了
通过下面SQL得到当前数据库中表名
select name from sysobjects where xtype='u'
当然存储过程exec sp_tables也能得到,只要比系统表去掉就可以了
取字段的根据表名tablename
用
'select name from syscolumns where id=(select id from sysobjects where name='+tablename+')'
当然存储过程EXEC sp_columns @table_name = 'tablename'也能得到了
#2
Oracle可以, MSSQL应该也可以, 我不能确定, 我看看再说:)
#3
啊 原来有人回答了啊 好啊, 我也知道了:)
#4
up
#5
如果type=‘u’的话还会将表dtproperties提取出来,这个表是干什么用的亚
#6
这个表是全动态的~添加一些数据的时候,需要动态的添加些表,或者表中的字段~我看看这个能不能用~
#7
还是没搞明白啊~
我们利用SQL语句: select * from ChouYFD.dbo.sysobjects where xtype='U' 这样就可以列出库名称是:ChouYFD中所有的表名.
ChouYFD.dbo这个表示所用数据库.sysobjects 表示数据库中某个表名,但是查询表怎么查询啊?
我们利用SQL语句: select * from ChouYFD.dbo.sysobjects where xtype='U' 这样就可以列出库名称是:ChouYFD中所有的表名.
ChouYFD.dbo这个表示所用数据库.sysobjects 表示数据库中某个表名,但是查询表怎么查询啊?
#8
你可以根据错误代码来判断是否有某表名或者是否有某字段存在
#9
declare @tablename varchar(80)
set @tablename='.....' --------你要查询的表名
if exists(select * from sysobjects where xtype='U' and name=@tablename)
print '存在表:'+@tablename
else
print '不存在表:'+@tablename
set @tablename='.....' --------你要查询的表名
if exists(select * from sysobjects where xtype='U' and name=@tablename)
print '存在表:'+@tablename
else
print '不存在表:'+@tablename
#10
在问一下,是不是这些语句只能在MS_SQL数据库中用吗?ACCESS的用不成吗?
我在ACCESS里用的呢?他们告诉我不能查找!
我在ACCESS里用的呢?他们告诉我不能查找!
#11
参考:
http://www.access911.net/75FAB01E17DC.htm
http://www.access911.net/71FAB71E12DC.htm
http://www.access911.net/75FAB01E17DC.htm
http://www.access911.net/71FAB71E12DC.htm
#12
没搞明白我不是用ADO。NET而不是用的通用的那种晕了~
#13
如果是sqlserver2000,就查sysobjects这个表就可以了。
oracle还没有研究,好象是有个什么syscat的表,做类似作用。
如果是查列名,可以读入表后查询元数据。
oracle还没有研究,好象是有个什么syscat的表,做类似作用。
如果是查列名,可以读入表后查询元数据。
#14
'//
'//函数名:GetSqlDbTabFldAttr
'//功能:取数据表下所有字段的属性.(直接从数据库的系统表取值,注意其 数据类型代号 与 VB.NET 中的有不一至性.)
'//返回值:DBFiedArrtr 结构数组.
'// 2004/11/29 MSTOP
Public Function GetSqlDbTabFldAttr(ByRef SqlConn As SqlClient.SqlConnection, ByVal DbTabName As String) As PublicMod.DBFiedArrtr()
Dim DatRead As SqlClient.SqlDataReader
Dim StrSql As String
Dim RevVal() As PublicMod.DBFiedArrtr
Dim ID As Integer
Dim I As Integer
'//直接从数据库的系统表取值,注意其 数据类型代号 与VB.NET中的有不一至性.
'//SQL字段类型及其代号:
'Image(34) text(35) uniqueidentifier(36) tinyint(48) smallint(52) Int(56)
'smalldatetime(58) real(59) money(60) DateTime(61) float(62) sql_variant(98)
'ntext(99) bit(104) decimal(106) numeric(108) smallmoney(122) bigint(127)
'varbinary(165) varchar(167) binary(173) char(175) timestamp(189)
'nvarchar(231) nchar(239) sysname(256)
'//SQL返回字段说明:
'TableName 表名, TablerRem 表说明, FiledNo 字段序号, FiledName 字段名,FiledTypeCode 类型代号,FiledType 类型,ID 标识
'ImpBytes 占用的字节数 ,DatLen 定义长度,Decdig 小数位数,IsNull 是否可为空,DefValue 默认值,'FiledRem 字段说明
StrSql = "SELECT " & _
"[TableName]=case when a.colorder=1 then d.name else '' end," & _
"[TablerRem]=case when a.colorder=1 then isnull(f.value,'') else '' end," & _
"[FiledNo]=a.colorder," & _
"[FiledName]=a.name," & _
"[ID]=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '1'else '' end," & _
"[IsPKey]=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 '1' else '' end," & _
"[FiledTypeCode]=b.xusertype," & _
"[FiledType]=b.name," & _
"[ImpBytes]=a.length," & _
"[DatLen]=COLUMNPROPERTY(a.id,a.name,'PRECISION')," & _
"[Decdig]=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)," & _
"[IsNull]=case when a.isnullable=1 then '1'else '' end," & _
"[DefValue]=isnull(e.text,'')," & _
"[FiledRem]=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='" & DbTabName & "'" & _
" order by a.id,a.colorder"
DatRead = SqlReader(SqlConn, StrSql)
ID = 0
While DatRead.Read
ReDim Preserve RevVal(ID)
'//直接从数据库系统表取值.
RevVal(ID).FieldActSize = 0 '//实际数据长度
RevVal(ID).FieldDefSize = CTeyeData.ToStr(DatRead.Item("DatLen")) '//定义的数据长度
RevVal(ID).FieldIsNull = CTeyeData.ToStr(DatRead.Item("IsNull")) '//是否可为NULL
RevVal(ID).FieldName = CTeyeData.ToStr(DatRead.Item("FiledName")) '//字段名
RevVal(ID).FieldType = CTeyeData.ToStr(DatRead.Item("FiledType")) '//字段类型
RevVal(ID).FieldTypeCode = CTeyeData.ToStr(DatRead.Item("FiledTypeCode")) '//字段类型代号
ID += 1
End While
DatRead.Close()
Return RevVal
End Function
#15
ding.........
#1
???
通过下面SQL得到当前数据库中表名
select name from sysobjects where xtype='u'
当然存储过程exec sp_tables也能得到,只要比系统表去掉就可以了
取字段的根据表名tablename
用
'select name from syscolumns where id=(select id from sysobjects where name='+tablename+')'
当然存储过程EXEC sp_columns @table_name = 'tablename'也能得到了
通过下面SQL得到当前数据库中表名
select name from sysobjects where xtype='u'
当然存储过程exec sp_tables也能得到,只要比系统表去掉就可以了
取字段的根据表名tablename
用
'select name from syscolumns where id=(select id from sysobjects where name='+tablename+')'
当然存储过程EXEC sp_columns @table_name = 'tablename'也能得到了
#2
Oracle可以, MSSQL应该也可以, 我不能确定, 我看看再说:)
#3
啊 原来有人回答了啊 好啊, 我也知道了:)
#4
up
#5
如果type=‘u’的话还会将表dtproperties提取出来,这个表是干什么用的亚
#6
这个表是全动态的~添加一些数据的时候,需要动态的添加些表,或者表中的字段~我看看这个能不能用~
#7
还是没搞明白啊~
我们利用SQL语句: select * from ChouYFD.dbo.sysobjects where xtype='U' 这样就可以列出库名称是:ChouYFD中所有的表名.
ChouYFD.dbo这个表示所用数据库.sysobjects 表示数据库中某个表名,但是查询表怎么查询啊?
我们利用SQL语句: select * from ChouYFD.dbo.sysobjects where xtype='U' 这样就可以列出库名称是:ChouYFD中所有的表名.
ChouYFD.dbo这个表示所用数据库.sysobjects 表示数据库中某个表名,但是查询表怎么查询啊?
#8
你可以根据错误代码来判断是否有某表名或者是否有某字段存在
#9
declare @tablename varchar(80)
set @tablename='.....' --------你要查询的表名
if exists(select * from sysobjects where xtype='U' and name=@tablename)
print '存在表:'+@tablename
else
print '不存在表:'+@tablename
set @tablename='.....' --------你要查询的表名
if exists(select * from sysobjects where xtype='U' and name=@tablename)
print '存在表:'+@tablename
else
print '不存在表:'+@tablename
#10
在问一下,是不是这些语句只能在MS_SQL数据库中用吗?ACCESS的用不成吗?
我在ACCESS里用的呢?他们告诉我不能查找!
我在ACCESS里用的呢?他们告诉我不能查找!
#11
参考:
http://www.access911.net/75FAB01E17DC.htm
http://www.access911.net/71FAB71E12DC.htm
http://www.access911.net/75FAB01E17DC.htm
http://www.access911.net/71FAB71E12DC.htm
#12
没搞明白我不是用ADO。NET而不是用的通用的那种晕了~
#13
如果是sqlserver2000,就查sysobjects这个表就可以了。
oracle还没有研究,好象是有个什么syscat的表,做类似作用。
如果是查列名,可以读入表后查询元数据。
oracle还没有研究,好象是有个什么syscat的表,做类似作用。
如果是查列名,可以读入表后查询元数据。
#14
'//
'//函数名:GetSqlDbTabFldAttr
'//功能:取数据表下所有字段的属性.(直接从数据库的系统表取值,注意其 数据类型代号 与 VB.NET 中的有不一至性.)
'//返回值:DBFiedArrtr 结构数组.
'// 2004/11/29 MSTOP
Public Function GetSqlDbTabFldAttr(ByRef SqlConn As SqlClient.SqlConnection, ByVal DbTabName As String) As PublicMod.DBFiedArrtr()
Dim DatRead As SqlClient.SqlDataReader
Dim StrSql As String
Dim RevVal() As PublicMod.DBFiedArrtr
Dim ID As Integer
Dim I As Integer
'//直接从数据库的系统表取值,注意其 数据类型代号 与VB.NET中的有不一至性.
'//SQL字段类型及其代号:
'Image(34) text(35) uniqueidentifier(36) tinyint(48) smallint(52) Int(56)
'smalldatetime(58) real(59) money(60) DateTime(61) float(62) sql_variant(98)
'ntext(99) bit(104) decimal(106) numeric(108) smallmoney(122) bigint(127)
'varbinary(165) varchar(167) binary(173) char(175) timestamp(189)
'nvarchar(231) nchar(239) sysname(256)
'//SQL返回字段说明:
'TableName 表名, TablerRem 表说明, FiledNo 字段序号, FiledName 字段名,FiledTypeCode 类型代号,FiledType 类型,ID 标识
'ImpBytes 占用的字节数 ,DatLen 定义长度,Decdig 小数位数,IsNull 是否可为空,DefValue 默认值,'FiledRem 字段说明
StrSql = "SELECT " & _
"[TableName]=case when a.colorder=1 then d.name else '' end," & _
"[TablerRem]=case when a.colorder=1 then isnull(f.value,'') else '' end," & _
"[FiledNo]=a.colorder," & _
"[FiledName]=a.name," & _
"[ID]=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '1'else '' end," & _
"[IsPKey]=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 '1' else '' end," & _
"[FiledTypeCode]=b.xusertype," & _
"[FiledType]=b.name," & _
"[ImpBytes]=a.length," & _
"[DatLen]=COLUMNPROPERTY(a.id,a.name,'PRECISION')," & _
"[Decdig]=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0)," & _
"[IsNull]=case when a.isnullable=1 then '1'else '' end," & _
"[DefValue]=isnull(e.text,'')," & _
"[FiledRem]=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='" & DbTabName & "'" & _
" order by a.id,a.colorder"
DatRead = SqlReader(SqlConn, StrSql)
ID = 0
While DatRead.Read
ReDim Preserve RevVal(ID)
'//直接从数据库系统表取值.
RevVal(ID).FieldActSize = 0 '//实际数据长度
RevVal(ID).FieldDefSize = CTeyeData.ToStr(DatRead.Item("DatLen")) '//定义的数据长度
RevVal(ID).FieldIsNull = CTeyeData.ToStr(DatRead.Item("IsNull")) '//是否可为NULL
RevVal(ID).FieldName = CTeyeData.ToStr(DatRead.Item("FiledName")) '//字段名
RevVal(ID).FieldType = CTeyeData.ToStr(DatRead.Item("FiledType")) '//字段类型
RevVal(ID).FieldTypeCode = CTeyeData.ToStr(DatRead.Item("FiledTypeCode")) '//字段类型代号
ID += 1
End While
DatRead.Close()
Return RevVal
End Function
#15
ding.........