SQL Server 下读取 表/字段 的说明备注信息

来源:互联网 发布:淘宝9块9包邮怎么赚钱 编辑:程序博客网 时间:2024/04/30 04:04

 /// <summary>        /// 得到数据全部表名        /// </summary>        /// <returns></returns>        public static List<string> GetAllTableName()        {            List<string> list = new List<string>();            string sql = "select name from sys.tables order by name";            Database db = DatabaseFactory.CreateDatabase();            using(IDataReader dataReader=db.ExecuteReader(CommandType.Text,sql))            {                while(dataReader.Read())                {                    string tableName = dataReader["name"].ToString();                    tableName = tableName.Substring(0, 1).ToUpper() + tableName.Substring(1).ToLower();                    list.Add(tableName);                }            }            return list;        }

/// <summary>        /// 得到表结构        /// </summary>        /// <param name="tableName"></param>        /// <returns></returns>        public static DataTable GetDataTable(string tableName)        {            string sql = string.Format("select top 1 * from {0} ", tableName);            DataSet ds = new DataSet();            DataAdapter dataadapter = new SqlDataAdapter(sql,GetConnectionString());            dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;            dataadapter.Fill(ds);            return ds.Tables[0];        }

 /// <summary>        /// 得到表字段的“说明”文本        /// </summary>        /// <param name="tableName"></param>        /// <returns></returns>        public static List<KeyValuePair<string, string>> GetDescriptionList(string tableName)        {            List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();            string sql =string.Format("SELECT  a.name AS ColumnName, isnull(g.[value],'') AS Description FROM  sys.columns a left join sys.extended_properties g  on (a.object_id = g.major_id AND g.minor_id = a.column_id) WHERE  object_id =(SELECT object_id FROM sys.tables WHERE name = '{0}') and g.[value] is not null",tableName);            Database db = DatabaseFactory.CreateDatabase();            DbCommand cmd = db.GetSqlStringCommand(sql);            using(IDataReader datareader=db.ExecuteReader(cmd))            {                while(datareader.Read())                {                    list.Add(new KeyValuePair<string, string>(datareader["ColumnName"].ToString(), datareader["Description"].ToString().Trim()));                }            }            return list;        }


以下是参考资料:

结果代码是: 建表后,设置表/字段的注释信息。

下面是 读取表/字段 的说明备注 的 SQL 语句。

 


获取数据库表清单:
select top 1000 
  ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,  
  a.name AS 表名, 
  isnull(g.[value],'-') AS 说明
from 
  sys.tables a left join sys.extended_properties g 
  on (a.object_id = g.major_id AND g.minor_id = 0)

No 表名 说明
1 test_table 测试表
2 test_main -

 

 

获取数据库表的字段清单 [这里是查看 test_table 表的字段]
SELECT
  a.column_id AS No,
  a.name AS 列名,
  isnull(g.[value],'-') AS 说明
FROM
  sys.columns a left join sys.extended_properties g
 on (a.object_id = g.major_id AND g.minor_id = a.column_id)
WHERE
  object_id =
    (SELECT object_id FROM sys.tables WHERE name = 'test_table')

No 列名 说明
1 Test_ID 主键(自增长)
2 Test_Key 种类
3 Test_Value 数值
4 Test_Type 内部类型
5 Test_BelongTo 从属关系
6 Test_Grade 等级
7 Test_Remark 备注
8 Test_Visible 是否可见

 

-----

更加详细一点的信息


SELECT
   col.name AS 列名,
   typ.name as 数据类型,
   col.max_length AS 占用字节数,
   col.precision AS 数字长度,
   col.scale AS 小数位数,
   col.is_nullable  AS 是否允许非空,
   col.is_identity  AS 是否自增,
   case when exists 
      ( SELECT 1 
        FROM 
          sys.indexes idx 
            join sys.index_columns idxCol 
            on (idx.object_id = idxCol.object_id)
         WHERE
            idx.object_id = col.object_id
            AND idxCol.index_column_id = col.column_id 
            AND idx.is_primary_key = 1
       ) THEN 1 ELSE 0 END  AS 是否是主键
FROM
  sys.columns col left join sys.types typ on (col.system_type_id = typ.system_type_id)
WHERE
  col.object_id =
(SELECT object_id FROM sys.tables WHERE name = 'test_table')

 

SQL Server 2005 的 Microsoft SQL Server Management Studio Express

没有 带列名一起复制。 凑合着看看吧,就不手动写列名了。

 

Test_ID    int    4    10    0    0    1    1    主键(自增长)
Test_Key    varchar    10    0    0    0    0    0    种类
Test_Value    varchar    20    0    0    0    0    0    数值
Test_Type    int    4    10    0    0    0    0    内部类型
Test_BelongTo    int    4    10    0    1    0    0    从属关系
Test_Grade    int    4    10    0    1    0    0    等级
Test_Remark    varchar    50    0    0    1    0    0    备注
Test_Visible    bit    1    1    0    1    0    0    是否可见


阅读全文
0 0
原创粉丝点击