C# 动态组合SQL脚本LIKE语句及查询参数防SQL注入攻击
C# 动态组合SQL脚本LIKE语句及查询参数防SQL注入攻击
动态组合SQL脚本的多个LIKE条件,并要求传入SQL参数防止SQL注入攻击。

动态组合的SQL脚本:
.png)
参考代码1:
C# Code:
public DataTable Search(String DocType, String DeptID, String FileCaption, String DocKind)
{
//构建CommandHelper实例,用于动态创建参数对象
CommandHelper cmd = _Database.CreateCommand("");
StringBuilder sb = new StringBuilder();
sb.Append("SELECT * FROM dt_doc WHERE 1=1 ");
if (!String.IsNullOrEmpty(DocType))
{
sb.Append($" AND DocType LIKE {_Database.ParamSymboName}DocType");//拼接SQL参数
cmd.AddParam("DocType", "%" + DocType + "%");// 添加SQL参数对象,组合LIKE条件的值
}
if (!String.IsNullOrEmpty(DeptID))
{
sb.Append($" AND DeptID LIKE {_Database.ParamSymboName}DeptID");
cmd.AddParam("DeptID", "%" + DeptID + "%");
}
if (!String.IsNullOrEmpty(FileCaption))
{
sb.Append($" AND FileCaption LIKE {_Database.ParamSymboName}FileCaption");
cmd.AddParam("FileCaption", "%" + FileCaption + "%");
}
//数字类型
if (!String.IsNullOrEmpty(DocKind))
{
sb.Append($" AND DocKind = {_Database.ParamSymboName}DocKind");
cmd.AddParam("DocKind", DocKind);
}
sb.Append(" ORDER BY " + dt_Doc.__KeyName);
//给DbCommand绑定SQL脚本
DbCommand command = cmd.Command;
command.CommandText = sb.ToString();
//调用IDatabase底层组件的方法
return _Database.GetTable(command, dt_Doc.__TableName);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
public DataTable Search(String DocType, String DeptID, String FileCaption, String DocKind)
{
//构建CommandHelper实例,用于动态创建参数对象
CommandHelper cmd = _Database.CreateCommand("");
StringBuilder sb = new StringBuilder();
sb.Append("SELECT * FROM dt_doc WHERE 1=1 ");
if (!String.IsNullOrEmpty(DocType))
{
sb.Append($" AND DocType LIKE {_Database.ParamSymboName}DocType");//拼接SQL参数
cmd.AddParam("DocType", "%" + DocType + "%");// 添加SQL参数对象,组合LIKE条件的值
}
if (!String.IsNullOrEmpty(DeptID))
{
sb.Append($" AND DeptID LIKE {_Database.ParamSymboName}DeptID");
cmd.AddParam("DeptID", "%" + DeptID + "%");
}
if (!String.IsNullOrEmpty(FileCaption))
{
sb.Append($" AND FileCaption LIKE {_Database.ParamSymboName}FileCaption");
cmd.AddParam("FileCaption", "%" + FileCaption + "%");
}
//数字类型
if (!String.IsNullOrEmpty(DocKind))
{
sb.Append($" AND DocKind = {_Database.ParamSymboName}DocKind");
cmd.AddParam("DocKind", DocKind);
}
sb.Append(" ORDER BY " + dt_Doc.__KeyName);
//给DbCommand绑定SQL脚本
DbCommand command = cmd.Command;
command.CommandText = sb.ToString();
//调用IDatabase底层组件的方法
return _Database.GetTable(command, dt_Doc.__TableName);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
参考代码2:
C# Code:
public DataTable Search(string content)
{
string sql = "SELECT * FROM tb_MyUser ";
CommandHelper cmd = _Database.CreateCommand("");
if (!string.IsNullOrEmpty(content))
{
sql = sql + $" WHERE Account LIKE {_Database.ParamSymboName}Account OR UserName LIKE {_Database.ParamSymboName}UserName ";
cmd.AddParam("Account", "%" + content + "%");
cmd.AddParam("UserName", "%" + content + "%");
}
cmd.Command.CommandText = sql;
DataTable dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
string sql = "SELECT * FROM tb_MyUser ";
CommandHelper cmd = _Database.CreateCommand("");
if (!string.IsNullOrEmpty(content))
{
sql = sql + $" WHERE Account LIKE {_Database.ParamSymboName}Account OR UserName LIKE {_Database.ParamSymboName}UserName ";
cmd.AddParam("Account", "%" + content + "%");
cmd.AddParam("UserName", "%" + content + "%");
}
cmd.Command.CommandText = sql;
DataTable dt = _Database.GetTable(cmd.Command, tb_MyUser.__TableName);
return dt;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
Like语法注意事项:
1. 使用参数化查询,参数的值不能带有单引号!
SQL语句:SELECT * FROM Person WHERE Name LIKE @Name
@Name参数传入的值:%小李%
2. 使用SQL拼接,参数的值必须要带单引号!
SQL语句:SELECT * FROM Person WHERE Name LIKE '%小李%'

2. 使用SQL拼接,参数的值必须要带单引号!
SQL语句:SELECT * FROM Person WHERE Name LIKE '%小李%'

参考文档:
SQL注入攻击的原理及其防范措施
达梦数据库 | 获取表结构的SQL脚本|C/S开发框架
自动升级程序支持SQL脚本更新升级
表网 - 网罗天下表结构,海量数据库表结构SQL脚本文件下载,软件开发文档下载
表网 - 网罗天下表结构,海量数据库表结构SQL脚本文件下载,软件开发文档下载
SQL使用LIKE查询模糊匹配多个特殊标点符号的数据
表网 - 网罗天下表结构,提供海量数据库表结构SQL脚本软件开发文档资源下载
SQL脚本获取SQLServer数据库目录存储过程:f_GetDBPath
C# 格式化CodeHighlighter生成的SQL脚本高亮着色源码(CSFramework.com原创)
ORM_FieldAttribute类详解:字段特性定义,框架内核根据此特性自动生成SQL脚本
SQL配置链接服务器脚本(SQL Link Server Script)
C#SQL注入攻击检查类SQLInjection
SQL2008多个查询条件分页查询脚本(原创)
提交数据时生成的SQL脚本便于实时跟踪
C# 检查字符串,防SQL注入攻击
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
SQL注入攻击的原理及其防范措施
达梦数据库 | 获取表结构的SQL脚本|C/S开发框架
自动升级程序支持SQL脚本更新升级
表网 - 网罗天下表结构,海量数据库表结构SQL脚本文件下载,软件开发文档下载
表网 - 网罗天下表结构,海量数据库表结构SQL脚本文件下载,软件开发文档下载
SQL使用LIKE查询模糊匹配多个特殊标点符号的数据
表网 - 网罗天下表结构,提供海量数据库表结构SQL脚本软件开发文档资源下载
SQL脚本获取SQLServer数据库目录存储过程:f_GetDBPath
C# 格式化CodeHighlighter生成的SQL脚本高亮着色源码(CSFramework.com原创)
ORM_FieldAttribute类详解:字段特性定义,框架内核根据此特性自动生成SQL脚本
SQL配置链接服务器脚本(SQL Link Server Script)
C#SQL注入攻击检查类SQLInjection
SQL2008多个查询条件分页查询脚本(原创)
提交数据时生成的SQL脚本便于实时跟踪
C# 检查字符串,防SQL注入攻击
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
