編寫適合於自己的代碼產生器(二)

來源:互聯網
上載者:User
      上次寫了如何在SQL SERVER 2000 上實現代碼產生器的基本原理,可是在 vista 下無法安裝 SQL SERVER 2000,所以今天花了一個下午的時間,特意研究了一下遍曆SQL SERVER 2005的方法,用於實現代碼產生器對vista的相容.注:由於寫作時時間倉促,以下內容均在SQL Server Management Studio Express下測試通過,當然也有其他的方法可以實現.若有不足或錯誤之處,請讀者給我留言.

      在SQL SERVER 2005 中查詢系統資訊都是通過視圖來完成的,資料庫在系統檢視表sys.databases中
查詢系統中存在的資料庫:SELECT * FROM sys.databases

查詢資料庫中的使用者表:

SELECT * FROM sys.objects WHERE type='u'

查詢表中的欄位(本例使用的表是member):

SELECT sys.columns.*,sys.columns.name 列名,
    CASE WHEN sys.columns.is_identity = 1 THEN '√' ELSE '' END 標識,
    CASE WHEN sys.columns.name = INFORMATION_SCHEMA.KEY_COLUMN_USAGE.COLUMN_NAME THEN '√' ELSE '' END 主鍵,
    sys.types.name 類型,
    sys.columns.max_length 佔用位元組數,
    COLUMNPROPERTY(sys.columns.object_id, sys.columns.name, 'PRECISION') AS 長度,
    isnull(COLUMNPROPERTY(sys.columns.object_id, sys.columns.name, 'Scale'), 0) 小數位元,
    sys.default_constraints.definition 預設值,
    (CASE WHEN sys.columns.is_nullable = 1 THEN '√' ELSE '' END) 允許空
FROM sys.columns
    INNER JOIN sys.objects ON sys.columns.object_id=sys.objects.object_id  AND sys.objects.type='u'
    INNER JOIN sys.types ON sys.columns.system_type_id=sys.types.system_type_id 
    LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ON INFORMATION_SCHEMA.KEY_COLUMN_USAGE.TABLE_NAME=sys.objects.name
    LEFT JOIN sys.default_constraints ON sys.columns.default_object_id=sys.default_constraints.object_id
WHERE sys.objects.name='member'

在視圖sys.columns中可以得到表格的列
在視圖sys.types中可以得到系統的欄位類型
主鍵資訊INFORMATION_SCHEMA.KEY_COLUMN_USAGE.COLUMN_NAME.這個不容易找到,費了我好長時間才找到.

另外還有欄位的描述沒有找到是如何與sys.columns建立關聯的,描述資訊可以在視圖sys.extended_properties中查詢到:

select * from sys.extended_properties

有了上面的SQL語句相信讀者能夠實現在SQL SERVER 2005下使用的代碼產生器了。當然你也可以將兩個版本的SQL SERVER寫成兩個實現同一介面的類,然後實現相容兩個版本的代碼產生器,當然也可以實現對ACCESS的相容。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.