【两种DbParameter的使用方式】防止SQL注入 C# MVC

1.第一种方法就是在使用conn的情况下,使用动态参数dapper来代替SQL拼接

conn.Open();
IDaction transaction = conn.BeginTransaction();//声明事务
var p = new DynamicParameters();
string sql="INSERT INTO table(name) Values (@Name)";
//这里的@Name就是下面的参数名
p.Add("@Name", id,dbType: DbType.Int32, direction: ParameterDirection.Output);
//p.Add(参数名,值,参数类型,输入类型)
connection.Execute(sql, p,translation);//执行
transaction.Commit();//事务提交
conn.Close();//关闭数据库链接

2.第二种方法就是使用DbParameter(在有database的情况下)
2.1 需要的参数不多的时候

DbParameter NameParameter = database.CreateParameter("name",name);
//创建参数,database.CreateParameter(参数名,值)
string sql = string.Format("insert into tablename(name) values({0})",NameParameter.ParameterName );
或者
string sql = "insert into tablename(name) values(@name)"//直接带入参数名
database.ExecuteForNonQuery(sql,NameParameter);
//带入参数,执行

2.2参数较多,则用一个List

List<DbParameter> list = new Dbparameter();
DbParameter NameParameter = database.CreateParameter("name",name);
//创建参数,database.CreateParameter(参数名,值)

//编写SQL
string sql = string.Format("insert into tablename(name) values({0})",NameParameter.ParameterName );
或者
string sql = "insert into tablename(name) values(@name)"//直接带入参数名

list.Add(NameParameter);
//把需要在sql中使用的参数添加到list里,最后执行的时候直接调用List

//执行
database.ExecuteForNonQuery(sql.ToString(),list.Array());
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#使用SQL的LIKE语句进行模糊查询时,需要注意防止SQL注入的问题。一种简单的方法是通过字符串过滤来提高SQL语句的安全性,防止SQL注入攻击。这可以有效地保护数据库的安全性。 当在C#使用参数进行模糊查询时,需要注意ADO.NET进行参数化时会自动将参数值包含在单引号中。在SQL语句中,如果将参数标识符@放在单引号中,单引号中的参数标识符@只会被当作字符串,因此无法正确查询数据。 正确的SQL模糊查询语句应该将通配符%单独标识出来,并使用参数变量进行查询。例如,正确的SQL模糊查询语句应该是类似于以下的形式: ``` string sql = "select * from table where columnName like '%' + @search + '%'"; ``` 在这个语句中,我们将通配符%单独标识出来,并使用参数变量@search进行查询。这样就能够正确地进行模糊查询了。 需要注意的是,在SQL查询语句中,单引号起着C#语句中字符串双引号的作用。在SQL中是没有双引号的,因此需要使用单引号将%引起来。这样才能正常进行模糊查询。 另外,还可以使用参数化查询的方式防止SQL注入攻击。通过使用参数对象将查询条件传递给SQL语句,可以避免直接拼接字符串造成的安全隐患。例如: ``` string sinfo = "abc"; string sql = "select * from table where columnName like @search"; List<DbParameter> parameters = new List<DbParameter>(); parameters.Add(new SqlParameter("@search", "%" + sinfo + "%")); // 执行查询代码 ``` 在这个例子中,我们使用了参数对象来传递查询条件,通过将参数值与通配符%拼接后作为参数的值传递给SQL语句,实现了安全的模糊查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C#使用带like的sql语句时防sql注入的方法](https://download.csdn.net/download/weixin_38698863/12808573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C#系列---⑨C#中如何实现带有参数的sql语句模糊查询(即Like查询)](https://blog.csdn.net/Elsa15/article/details/103262977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C# sql like查询](https://blog.csdn.net/weixin_53370274/article/details/117353797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值