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

本文介绍两种SQL参数化方法:一是使用Dapper动态参数代替SQL拼接,通过具体实例展示了如何利用动态参数进行安全高效的数据库操作;二是使用DbParameter实现参数化查询,包括参数较少和参数较多时的具体操作步骤。
摘要由CSDN通过智能技术生成

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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值