JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          最近做一個項目,客戶希望可以自己選擇想要查看的列表,這樣就不好辦了,選擇列表的名字他們也想自定義,沒辦法這就需要查看數據表中字段,中文說明,默認標志了。在網上查了部分資料但是發現粘上去的代碼都存在問題,無奈只好自己修改了一下,代碼如下:

          如下代碼能正常運行,都是網上查找資料最后拼湊總結出來的。條件就自己加吧。網上好像也有不少類型的東西,這里留著以備不時只需!

          SELECT (CASE
                   
          WHEN a.colorder = 1 THEN
                    d.NAME
                   
          ELSE
                    
          ''
                 
          END) N'表名',
                 a.colorder N
          '字段序號',
                 a.NAME N
          '字段名',
                 (
          CASE
                   
          WHEN columnproperty(a.id, a.NAME, 'IsIdentity'= 1 THEN
                    
          ''
                   
          ELSE
                    
          ''
                 
          END) N'標識',
                 (
          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) N'主鍵',
                 b.NAME N
          '類型',
                 a.length N
          '占用字節數',
                 
          columnproperty(a.id, a.NAME, 'PRECISION'AS N'長度',
                 
          isnull(columnproperty(a.id, a.NAME, 'Scale'), 0AS N'小數位數',
                 (
          CASE
                   
          WHEN a.isnullable = 1 THEN
                    
          ''
                   
          ELSE
                    
          ''
                 
          END) N'允許空',
                 
          isnull(e.text'') N'默認值',
                 
          isnull(g. VALUE, ''AS N'字段說明'
          --into ##tx
            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 sys.extended_properties g ON a.id = g.major_id
                                               
          AND a.colid = g.minor_id
           
          ORDER BY object_name(a.id), a.colorder

          sysproperties表的詳解: 

          1、表名:sqlserver的注釋表,每個數據庫都有,包括表和字段的注釋,表或者列的注釋都會存儲,沒有注釋不存儲。 
          2、字段: 
            id:表的ID或者是列的ID 
            smallid:列的順序,排序用 
            type:3 表,4字段,可能還有約束什么的,還沒有測試出 
            name:統一的MS_Description 
            value:描述

           

          如需修改(轉載部分)

          如果需要更新 此表的 內容 需要 開啟 [允許對系統目錄直接進行修改] ,否則 改不了 系統表

          如果 不開啟 此 功能  ,那么也可以 使用 存儲過程[sp_addextendedproperty] 來 添加\更新\刪除 表和字段的描述 用法如下


           

           --創建表
          Create Table 表(a1 varchar(10),a2 char(2))

          --為表 添加 描述信息 : 第二個參數為 [描述] 第六個參數為 [表名]
          EXECUTE sp_addextendedproperty N'MS_Description', '人員信息表', N'user', N'dbo', N'table', N'表', NULL, NULL

          --為表 更新 描述信息 : 第二個參數為 [描述]  第六個參數為 [表名]
          EXECUTE sp_updateextendedproperty 'MS_Description',N'adsfasfdas', N'user', N'dbo', N'table', N'表', NULL, NULL

          --為表 刪除 描述信息 : 第五個參數為 [表名]
          EXEC sp_dropextendedproperty 'MS_Description',N'user', N'dbo', N'table', N'表', NULL, NULL

           

          --字段的 添加 更新 刪除 方法 
          --為 字段a1 添加 描述信息: 第二個參數為 [描述] 第六個參數為 [表名] 第八個參數為 [字段名稱] 
          EXECUTE sp_addextendedproperty N'MS_Description', '姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'

          --更新 字段 a1 的描述屬性:第二個參數為 [描述] 第六個參數為 [表名] 第八個參數為 [字段名稱] 
          EXEC sp_updateextendedproperty 'MS_Description','字段1dd','user',dbo,'table','表','column',N'a1'

          --刪除 字段 a1 的描述屬性:第五個參數為 [表名] 第七個參數為 [字段名稱] 
          EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column','a1'

          --刪除測試
          Drop Table 表

          posted on 2013-03-31 04:59 rogerfan 閱讀(854) 評論(0)  編輯  收藏 所屬分類: 【數據庫】
          主站蜘蛛池模板: 曲水县| 九龙坡区| 乐山市| 南汇区| 武义县| 平乡县| 昭通市| 锡林浩特市| 平安县| 都昌县| 郴州市| 东乡| 台中县| 吕梁市| 青川县| 娄底市| 麻江县| 邹平县| 益阳市| 庐江县| 铜山县| 湟源县| 保靖县| 阳城县| 盐池县| 资溪县| 海原县| 和平县| 镇平县| 邯郸县| 罗山县| 安康市| 清新县| 横山县| 延吉市| 海丰县| 同仁县| 永仁县| 宜川县| 奎屯市| 鹤庆县|