2011-10-18 18 views
2

我試圖顯示從使用jQuery使用jQuery從SQL表

我選擇具有SELECT * FROM table1表SQL Server表列和行顯示列標題和行,所以我不知道是什麼的列標題除非我從sys.columns分開得到它們。 select語句的輸出也以XML格式出現以對抗XSS。

如何選擇列

SELECT c.column_id, c.name, y.system_type_id, y.name AS system_type_name 
FROM sys.columns AS c 
JOIN sys.types AS y ON c.system_type_id = y.system_type_id 
JOIN sys.tables AS t ON c.object_id = t.object_id 
WHERE y.name NOT LIKE 'sysname' 
AND t.object_id = '1234567890' 
FOR XML RAW, TYPE, ROOT('rows'); 

的樣本XML輸出

<rows> 
    <row column_id="1" name="id" system_type_id="56" system_type_name="int" /> 
    <row column_id="5" name="added" system_type_id="61" system_type_name="datetime" /> 
    <row column_id="4" name="allowlogin" system_type_id="104" system_type_name="bit" /> 
    <row column_id="3" name="pw" system_type_id="165" system_type_name="varbinary" /> 
    <row column_id="2" name="un" system_type_id="231" system_type_name="nvarchar" /> 
</rows> 

如何選擇行

SELECT * FROM table1 FOR XML RAW, TYPE, ROOT('rows') 

我想不出(可能是因爲它的晚期)如何去做這個。有任何想法嗎?

+0

@marc_s:'XML PATH('')'不好用,因爲如果你有一個名爲''的列,它會打破它:) – Christian

回答

0

如果我理解正確的話,你想在這樣的一個字符串的列名:字段1,字段2,字段3 ...

如果這是你能做到這一點的情況下:

SELECT STUFF((SELECT ','+name FROM YourDatabaseName.sys.columns WHERE object_id = OBJECT_ID('YourTableName') ORDER BY column_id FOR XML PATH('')),1,1,'') 

希望有幫助!

+0

感謝您的回答克里斯,但我已經走了一個不同的現在路線。 – Christian