我正在考虑创建一个基本的ORM(纯粹是为了好玩),我想知道,有没有办法返回数据库中的表列表以及每个表的字段?

使用这个方法,我希望能够循环遍历结果集(在C#中),然后对结果集中的每个表执行此操作(例如,使用反射生成一个将执行或包含xyz的类).

除此之外,SQL Server有哪些好的在线博客?我知道这个问题实际上是关于在Sql Server中使用系统SP和数据库的,我对一般查询没有意见,所以我对一些涉及此类功能的博客感兴趣.

谢谢

推荐答案

这就是你想要的吗:

Using 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';

Using INFORMATION SCHEMA VIEWS

  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/

Sql相关问答推荐

每个时间间隔总和的PostgreSQL窗口函数

识别顺序记录组

如何用前一个非空值替换空值?

PostgreSQL:获取每家店铺收入最高的员工

用相同值更新行

仅在特定字符串之后提取两个圆括号之间的计量单位文本

我希望以正确的升序获取SQL结果.怎样才能得到它们?

按日期时间(不包括秒)连接表

Select 非重复值并按条件排除行

Oracle分层查询-两条路径在末尾合并为一条

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

Proc SQL Select Distinct SAS

从给定数据中查找下一个工作日期

按行值出现的顺序对行值进行分组

从每月生成的系列中生成每日汇率

DB2 SQL查询结果多余数据

Postgresql:在链接表中判断相关表中插入值的条件

有没有办法在雅典娜中将字符串转换为 int ?

批量更改WooCommerce中所有产品的税收状态

Postgres 窗口函数未按预期工作