使用StringBuilder与SqlParameter

本文介绍了使用SQL参数化查询来防止SQL注入攻击的方法,并通过一个具体的.NET示例展示了如何构建参数化查询并安全地传递变量。此外还讨论了参数化查询在减少内存占用方面的优势。

好处:

防止sql注入;占用内存更少

例子:

传参有业务查询条件startDate,endDate,A,每页数据个数pageSize,当前查询页码pageIndex

string sql = @"select A,B,C
               FROM sc with(nolock) 
               WHERE IsDelete!=1 {0}
               ORDER BY A DESC
           OFFSET @pageSize*(@pageIndex-1) ROWS FETCH NEXT @pageSize ROWS ONLY";
StringBuilder sb = new StringBuilder();
List<SqlParameter> parameters = new List<SqlParameter>();
DateTime now = DateTime.Now;
parameters.Add(new SqlParameter("@startDate", startDate==null?new DateTime(now.Year,now.Month,now.Day):startDate));
parameters.Add(new SqlParameter("@endDate", endDate == null ? new DateTime(now.Year, now.Month, now.Day).AddDays(1) : DateTime.Parse(endDate.ToString()).AddDays(1)));
parameters.Add(new SqlParameter("@A", A));
parameters.Add(new SqlParameter("@pageSize", pageSize));
parameters.Add(new SqlParameter("@pageIndex", pageIndex));
if (startDate != null)
    sb.Append(" and sc.Date>=@startDate ");
if (endDate != null)
    sb.Append(" and sc.Date<@endDate ");
if (!string.IsNullOrEmpty(A))
    sb.Append(" and sc.A=@A ");
sql = string.Format(sql, sb);
//查询数据库 

转载于:https://www.cnblogs.com/Lulus/p/7874190.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值