为什么要参数化执行SQL语句呢?

一个作用就是可以防止用户注入漏洞。

简单举个列子吧。

比如账号密码登入,如果不用参数,

写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧

sql:select id,pw where id='inputID' and pw='inputPW';

一般情况没什么问题,但如果用户输入的id或PW带 ‘ ,这是可能就会出现漏洞,bug了

比如用户输入的id是: 1‘ or ’1‘=‘1

这是sql语句执行的是:select id,pw where id='1‘ or ’1‘=‘1 ‘ and pw='inputPW';

那数据库里的所有账号密码都符合这个条件了。

简而言之,用户可以通过 ' 来改变你SQL的执行。

参数化就可以避免这个问题了。

/************************非查询操作*****************************************/

//今天太晚了,先写个非查询操作的,明天在写查询操作的。

/****函数*****/
/// <summary>
/// 增删改数据,返回影响行数,没有则返回-1
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="ps">参数</param>
/// <returns>返回影响行数</returns> static string connStr ="server=IP;User Id=账号名;password=密码;Database=表名";
public static int ExecuteNonQuery(string sql, params MySqlParameter[] ps)
{ using (MySqlConnection conn = new MySqlConnection(connStr))
{
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddRange(ps);
conn.Open();
return cmd.ExecuteNonQuery();//返回受影响行数
}
}
} /****应用举例****/ public void InsertData()
{
int cid=,aid=; string name="hha";
string sql = "insert into tb_compart (compartID,compartName,areaID)values(@compartID,@compartName,@areaID);";
MySqlParameter[] ps ={ new MySqlParameter("@compartID",(object)cid),
new MySqlParameter("@compartName",name),
new MySqlParameter ("@areaID",(object)aid)};
int r = Mysql.MySQLHelper.ExecuteNonQuery(sql, ps);//r得值就是受影响的行数,执行失败r=-1;
} }

C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】的更多相关文章

  1. Entity Framework Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  2. MVC EF 执行SQL语句(转载)

    MVC EF 执行SQL语句 最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 闲着没事,看了一篇关于LI ...

  3. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  4. Python MySQLdb 执行sql语句时的参数传递

    使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法. 1.不传递参数 conn = MySQLdb.connect(user="root",passwd=&qu ...

  5. EF Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  6. nhibernate中执行SQL语句

    在有些时候,可能需要直接执行SQL语句.存储过程等,但nhibernate并没有提供一种让我们执行SQL语句的方法,不过可以通过一些间接的方法来实现. 下面给出一个在nhibernate中执行SQL语 ...

  7. linq直接执行sql语句

    1.ExecuteQuery方法 看命名,我们很容易联想到ado.net里熟悉的Command的ExecuteNonQuery方法,但是VS的智能提示告诉我们这个方法返回的是一个泛型集合,应该&quo ...

  8. EF中执行Sql语句

    Entity Framework是微软出品的高级ORM框架,大多数.NET开发者对这个ORM框架应该不会陌生.本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity F ...

  9. 4.5 .net core下直接执行SQL语句并生成DataTable

    .net core可以执行SQL语句,但是只能生成强类型的返回结果.例如var blogs = context.Blogs.FromSql("SELECT * FROM dbo.Blogs& ...

随机推荐

  1. iOS autolayout 代码,自定义间距

    最近换了新的项目组,然后这个项目组是纯代码,然后我就开始试着用代码去写适配,结果学艺不精,遇到个闪退,搜了一下发现几乎没有人遇到这个问题,后来发现其实就是我自己太粗心了. 我是这样写的 NSArray ...

  2. Power of Four(Difficulty: Easy)

    题目: Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example ...

  3. Maven 常用的命令

    运行几个基本的Maven命令 mvn compile          编译主程序 mvn test-compile   编译测试程序 mvn clean 清理 mvn test 测试 mvn pac ...

  4. class can not be find with platformType:1 step 1

    使用第三方库的时候 (配合cocopods)混合使用一定要注意 为什么会出现这样的问题... 苦苦难为我半天时间 都有想打人的冲动 前天一切正常今天出来个这 原因很简单当使用cocopods的时候默认 ...

  5. 可拖拽的ListView

    今天研究了一下可拖拽的ListView ,当ListView的数据不能充满整个模拟器的时候,系统自带的listview上拖下拽都不好使,显得很单调, 为了实现上拖下拽时也能实现滚动的效果,这时候就需要 ...

  6. Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm

    一.本文的目的       Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...

  7. 366. Find Leaves of Binary Tree

    Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ...

  8. 随感一:android handler传值更改ui

    handler+looper传值更改activity的UI 博客开了一段时间,一直想写点自己的学习经验及体会,等着以后长时间不用再要用到的时候直接拿过来上手.想了想,之前用到handler, 看了几篇 ...

  9. 关于Blender

    一.插入背景图片  1.'N'调出右栏工具,拖至后面有Background Images 打钩,点开三角形,按'add image'all views 可以确定加入图片到哪个view,open可以添加 ...

  10. 1、MVC和EF中的 Model First 和 Code First

    准备:先引入MVC和EF的dll包 *命令方法:打开工具——库程序包管理器——程序包管理器控制台,选择自己的项目 a)     Install-Package EntityFramework -Ver ...