標籤:
開發時,勉不了需要使用SQL直接與資料庫互動,這時對於資料庫中的表名及欄位名會使用的比較多。如果每使用一次都複製一個,實在蛋疼。所以就考慮將其做成const常量。但是資料庫中的表和欄位相當多,一個一個敲,不但累,還有可能敲錯。要保證正確,最好的辦法當然是使用工具或者指令碼。
這裡提供一個SQL指令碼的實現。
原理:擷取資料庫的表--->遍曆每個表中的欄位--->產生資料
SQL代碼
DECLARE @tableName VARCHAR(MAX)
DECLARE @tableCount int
DECLARE @tableIndex int
DECLARE @tempTable TABLE
(
DATA VARCHAR(MAX)
)
SELECT @tableCount=COUNT(*) FROM SysObjects WHERE XType=‘U‘
-- XType=‘U‘:表示所有使用者表;
--XType=‘S‘:表示所有系統資料表;
SET @tableIndex=1
WHILE @tableIndex<[email protected]
BEGIN
SELECT @tableName=NAME
FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY NAME) AS TempNO,NAME FROM SysObjects
WHERE XType=‘U‘
) TEMP
WHERE [email protected]
INSERT INTO @tempTable VALUES(‘‘)
INSERT INTO @tempTable VALUES(‘#region ‘ [email protected])
INSERT INTO @tempTable VALUES(‘public sealed class ‘ [email protected]+‘{‘)
INSERT INTO @tempTable SELECT ‘public const string ‘+name+‘="‘+name+‘";‘ FROM syscolumns WHERE id in
(SELECT id FROM sysobjects WHERE [email protected])
INSERT INTO @tempTable VALUES( ‘}‘)
INSERT INTO @tempTable VALUES(‘#endregion‘)
INSERT INTO @tempTable VALUES(‘‘)
SET @tableIndex+=1
END
SELECT * FROM @tempTable
產生的結果
SQL中的結果圖
C#中的結果圖
具體可以依據需要作出調整
[轉]基於SQL指令碼將資料庫表及欄位提取為C#中的類