如何将动态sql列读取到C#中
本文关键字:读取 sql 动态 | 更新日期: 2023-09-27 18:25:58
我有一个sql透视查询,它会产生动态sql列。如何将这些值读取到C#对象中?
虽然我能够从数据读取器中读取值,但我并没有取得多大成功。我不能把它装进一个物体里。
我需要使用datareader并通过服务层将对象传递到UI。
类似于下面的sql代码,
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT ',' + QUOTENAME([MONTH])
FROM #REVENUE
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
SELECT @query =
'SELECT * FROM
(SELECT
[MONTH],
SALES
FROM #REVENUE)X
PIVOT
(
AVG(SALES)
for [MONTH] in (' + @cols + ')
) P
EXEC SP_EXECUTESQL @query
如果您选择进入SQLDataReader,它有一个GetName属性,它将返回列名。类似于:
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(yourQuery, yourConnection)) {
using (IDataReader reader = cmd.ExecuteReader) {
for (int i = 0; i <= reader.FieldCount; i++) {
var name = reader.GetName(i);
}
}
}