一: 使用参数化命令查询
DAL类:
public DataTable StudentDAL(string name,string gender)
{
string str="连接字符串";
using(sqlconnection con=new sqlconnection(str))
{
string sql="select * from stdent where studentName=@name and Gender=@gender";

sqlcommand com=new sqlcommand();
sqlparameter[] par=
{
new sqlparameter=("@name",name),
new sqlparameter=("@gender",gender);
};
com.parameters.addRange(par);

sqldataadapter da=new sqldataadapter(com);

dataset dt=new dataset();
da.Fill(dt);
return dt.Tables[0];
}
}

二:在C#中调用带输入参数的存储过程

--创建存储过程
create proc usp_selectStudent
@studentName nvarchar(10)
as
select * froom student where StudentName=@studentNanme
go

DAL类
public DataTable GetStudentInFo(string name)
{
string str="连接字符串";
using(sqlconnection con=new sqlconnection(str))
{
string sql="usp_selectStudent";
sqldataadapter da=new sqldataadapter(sql,con);
sqlcommand com=da.selectcommand;
//指定字符串为存储过程
com.CommandType=CommandType.StoredProcedure;
sqlparameter par=new sqlparameter=("@name",name);
com.parameter.add(par);
dataset dt=new dataset();
da.Fill(dt);
return dt.Tables[0];

}
}

三: 在C#中调用带输出参数的存储过程

--创建存储过程
create proc usp_selectstudentCount
@name nvarchar(10)
@Gender nvarchar(10) output
as
select @Gender=count(*) from student where studentName=@name;
select * froom student where studentName=@name;
go

DAL类
public DataTable GetStudentCount(string name,string Gender)
{
string str="连接字符串";
using(sqlconnection con=new sqlconnection(str))
{
string usp_selectstudentCount
sqldataadapter da=new sqldataadapter(sql,con);
sqlcommand com=da.selectCommand;

com.CommandType=CommandType.StoredProcedure;
sqlparameter [] pa=
{
new sqlparameter("@name",name),
//设置为输出参数
new sqlparameter("@Gender",sqlDbType.nvarchar,10)
}
//设置最后一个参数的输出 方向
pa[pa.length-1].Direction=ParameterDiraction.OutPut;

com.parameter.addRange(pa);
string count=pa[pa.length-1].value.toString();
dataset dt=new dataset();
da.Fill(dt);
return Table dt.Table[0];
}
}

参数化命令相关知识点(防止Sql注入)的更多相关文章

  1. 参数化命令相关知识点之==================防止SQl的注入

    一: 使用参数化命令查询DAL类: public DataTable StudentDAL(string name,string gender) { string str="连接字符串&qu ...

  2. 使用参数化查询防止SQL注入漏洞(转)

    SQL注入的原理 以往在Web应用程序访问数据库时一般是采取拼接字符串的形式,比如登录的时候就是根据用户名和密码去查询: string sql * FROM [User] WHERE UserName ...

  3. 使用参数化查询防止SQL注入漏洞

    参数化查询防止SQL注入漏洞 看别人的登录注册sql语句有没漏洞即可 Where  name=‘admin’ or ‘1=1’ and password=’123’; 可以Or ‘1=1’就是漏洞 h ...

  4. SQL注入与参数化查询

    SQL注入的本质 SQL注入的实质就是通过SQL拼接字符串追加命令,导致SQL的语义发生了变化.为什么发生了改变呢? 因为没有重用以前的执行计划,而是对注入后的SQL语句重新编译,然后重新执行了语法解 ...

  5. python mysql参数化查询防sql注入

    一.写法 cursor.execute('insert into user (name,password) value (?,?)',(name,password)) 或者 cursor.execut ...

  6. MySQL参数化有效防止SQL注入

    sql语句的参数化,可以有效防止sql注入 注意:此处不同于python的字符串格式化,全部使用%s占位 from pymysql import * def main(): find_name = i ...

  7. SQL注入之代码层防御

    [目录] 0x0 前言 0x1 领域驱动的安全 1.1 领域驱动的设计 1.2 领域驱动的安全示例 0x2 使用参数化查询 2.1 参数化查询 2.2 Java中的参数化语句 2.3 .NET(C#) ...

  8. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  9. MySQL之SQL注入

    1.SQL注入? 通过SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 2.防止SQL注入,我们需要注意以下几个要点: ①永远不要信任用户的输入 ...

随机推荐

  1. 高吞吐量的分布式发布订阅消息系统Kafka--安装及测试

    一.Kafka概述 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因 ...

  2. composite

    #coding:utf-8 import math # 在确定函数前,我们先来了解下算法 # 有数 n 判断其是否是合数 # 如果 n 除以 range(2,math.sqrt(n)+1) 能够整除, ...

  3. Wtl之奇技淫巧篇:一、SDI如何居中显示视图

    Wtl的sdi应用,视图默认铺满框架的客户区.视图通常用modeless对话框,所有的界面元素都拥挤在左上角,这明显很丑陋.我们尝试让视图居中显示,保持原始大小,这是个很典型的问题,看似简单,诸多细节 ...

  4. server 2012 IIS 启用.NET 4.5

    server2012 自带.NET 4.5 不过IIS服务器只有2.0 和 4.0 所以我们需要手动配置 1.服务器-添加角色和功能 2.依次下一步,选择到服务器角色 -点开web服务器(IIS)-应 ...

  5. 3种归并操作js代码

    /**良哥的*/ function merge(a, b) { var aLen = a.length, bLen = b.length, maxLen = Math.max(aLen, bLen), ...

  6. VSFTPD添加用户

    VSFTPD的安装网上有很多教程这里就不多说了,这里主要是针对做主机空间服务的朋友在安装好vsftpd后如何为用户增加ftp账号 先来看一看我们一般在*inux系统下面如何增加用户的 #adduser ...

  7. Android之TextView文字绘制流程

    一:TextView的onDraw()方法: 1.第一句restartMarqueeIfNeeded()绘制字幕滚动. protected void onDraw(Canvas canvas) { r ...

  8. mysql 启动错误-server PID file could not be found

    [root@centos var]# service mysqld stop MySQL manager or server PID file could not be found!       [F ...

  9. 【Android】设备标识

    Android系统以及设备都有很多的“标识”号,比如常见的IMEI,SerizalNumber,UUID等概念,但是这些都存在一定程度上的不可靠性,到底如何标记一台Android设备? 文章内容多来自 ...

  10. JavaScript进阶内容1:各种对象类型判断

    该文章主要用来介绍JavaScript中常用的一些对象检测判断方法,整理资源来自书本和网络,如有错误或说明不详之处,望评论提出,本菜定提名感谢……(本文章知识比较基础,大牛请提些意见再绕道,三克油^_ ...