我正在寻找创建一个基本的ORM(纯粹是为了好玩),并且想知道,有没有办法返回数据库中的表列表以及每个表的字段?
使用这个,我希望能够循环遍历结果集(在C#中),然后对结果集中的每个表说,执行此操作(例如,使用反射来创建将执行或包含xyz的类).
除此之外,SQL Server的一些优秀在线博客是什么?我知道这个问题实际上是关于在Sql Server中使用系统SP和数据库,我对一般查询没问题,所以我对一些涵盖这种功能的博客感兴趣.
谢谢
这是你想要的:
使用OBJECT CATALOG VIEWS
SELECT T.name AS Table_Name , C.name AS Column_Name , P.name AS Data_Type , P.max_length AS Size , CAST(P.precision AS VARCHAR) + '/' + CAST(P.scale AS VARCHAR) AS Precision_Scale FROM sys.objects AS T JOIN sys.columns AS C ON T.object_id = C.object_id JOIN sys.types AS P ON C.system_type_id = P.system_type_id WHERE T.type_desc = 'USER_TABLE';
使用信息模式视图
SELECT TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME , ORDINAL_POSITION , COLUMN_DEFAULT , DATA_TYPE , CHARACTER_MAXIMUM_LENGTH , NUMERIC_PRECISION , NUMERIC_PRECISION_RADIX , NUMERIC_SCALE , DATETIME_PRECISION FROM INFORMATION_SCHEMA.COLUMNS;
参考:我的博客 - http://dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/
表格::
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
列 ::
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
要么
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='your_table_name'
获取所有表的列表以及数据库中的字段:
Select * From INFORMATION_SCHEMA.COLUMNS Where TABLE_CATALOG Like 'DatabaseName'
获取表格中所有字段的列表:
Select * From INFORMATION_SCHEMA.COLUMNS Where TABLE_CATALOG Like 'DatabaseName' And TABLE_NAME Like 'TableName'
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
我测试了一些解决方案
Select * From INFORMATION_SCHEMA.COLUMNS
为您提供CURRENT /默认数据库的列信息.
Select * From.INFORMATION_SCHEMA.COLUMNS
,没有<和>,为您提供数据库DBNAME的列信息.