下面的SQL 如何在C#中转为SQL命令?

hstczhgjx 2016-03-29 10:36:40
--6:带条件查询的参数化动态PIVOT行转列
-- =============================================
-- Author: <听风吹雨>
-- Create date: <2014.05.26>
-- Description: <参数化动态PIVOT行转列,带条件查询的参数化动态PIVOT行转列>
-- Blog: <http://www.cnblogs.com/gaizai/>
-- =============================================
DECLARE @sql_str NVARCHAR(MAX)
DECLARE @sql_col NVARCHAR(MAX)
DECLARE @sql_where NVARCHAR(MAX)
DECLARE @tableName SYSNAME --行转列表
DECLARE @groupColumn SYSNAME --分组字段
DECLARE @row2column SYSNAME --行变列的字段
DECLARE @row2columnValue SYSNAME --行变列值的字段
SET @tableName = 'TestRows2Columns'
SET @groupColumn = 'UserName'
SET @row2column = 'Subject'
SET @row2columnValue = 'Source'
SET @sql_where = 'WHERE UserName = ''王五'''

--从行数据中获取可能存在的列
SET @sql_str = N'
SELECT @sql_col_out = ISNULL(@sql_col_out + '','','''') + QUOTENAME(['+@row2column+'])
FROM ['+@tableName+'] '+@sql_where+' GROUP BY ['+@row2column+']'
--PRINT @sql_str
EXEC sp_executesql @sql_str,N'@sql_col_out NVARCHAR(MAX) OUTPUT',@sql_col_out=@sql_col OUTPUT
--PRINT @sql_col

SET @sql_str = N'
SELECT * FROM (
SELECT ['+@groupColumn+'],['+@row2column+'],['+@row2columnValue+'] FROM ['+@tableName+']'+@sql_where+') p PIVOT
(SUM(['+@row2columnValue+']) FOR ['+@row2column+'] IN ( '+ @sql_col +') ) AS pvt
ORDER BY pvt.['+@groupColumn+']'
--PRINT (@sql_str)
EXEC (@sql_str)

以上是参考http://www.cnblogs.com/gaizai/p/3753296.html,非常好用,但现在我要在C# 中的网页中使用,怎么才可以变成类似下面的代码,即SQL代码
protected void BMbind(string sql)
{
string strConn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection con = new SqlConnection(strConn);
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from STUDENT "+sql.ToString()+" order by DX,NJ,ZY,XH ASC ", con);
DataSet ds = new DataSet();
da.Fill(ds);
BM.DataSource = ds;
BM.DataBind();
BM.DataKeyNames = new string[] { "ID" };
con.Close();
con = null;

}

-------------------------
下面这几个是我页面来的参数
------------------------------------------------------------
SET @tableName = 'TestRows2Columns'
SET @groupColumn = 'UserName'
SET @row2column = 'Subject'
SET @row2columnValue = 'Source'
SET @sql_where = 'WHERE UserName = ''王五'''
-------------------------------------------------------------
...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hstczhgjx 2016-04-02
  • 打赏
  • 举报
回复
已经成功解决。
hstczhgjx 2016-03-30
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
直接保存为存储过程,在C#中调用存储过程。
存储过程需要返回结果集,然后在Gridview里显示出来,不会代码啊。
threenewbee 2016-03-30
  • 打赏
  • 举报
回复
直接保存为存储过程,在C#中调用存储过程。
正怒月神 版主 2016-03-30
  • 打赏
  • 举报
回复
存储过程不就好了?
lutaotony 2016-03-30
  • 打赏
  • 举报
回复
去搜搜,调用存储过程,这个度娘很多的哈
kiss筱魔 2016-03-30
  • 打赏
  • 举报
回复
存储过程的调用和调用sql的方法是一样的,只不过一个是CommandType.Text,一个是CommandType.StoredProcedure

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧