参数化命令相关知识点之==================防止SQl的注入
2016-04-13 15:28
531 查看
一: 使用参数化命令查询DAL类: public DataTable StudentDAL(string name,string gender) { string str="连接字符串"; //使用Using的稀少资源的释放 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]; } }
补充一下Using的语法:
using (类型 对象名 = new 类型(参数列表)) { //…… //…… }
参数化命令— SqlParameter
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/10/8913f82f243503a826b20e54f20f0aa4.png)
相关文章推荐
- invalid floating point operation occurred(SQL Server发生无效浮点数操作)
- Oracle ID自增长的设置
- NoSql:从关系型数据库到非关系型数据库
- nginx+tomcat7+memcached服务架构实现session共享
- SQL联合查询(内联、左联、右联、全联)的语法
- mysql逗逼的.frm文件恢复数据库
- Oracle 游标使用全解
- Handling special characters with FOR XML PATH('')(处理xml输出的特殊字符,如<等)
- redis+mybatis+spring
- 解决存到数据库里中文乱码问题
- Oracle system用户忘记密码的解决方法
- MySQL 5.6.30 升级到5.7.10
- 在Sql Server中使用证书加密数据
- MySql和Hibernate中关于cascade的用法
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- mysql 列转行,合并字段(行转列)
- MySql数据引擎简介与选择方法
- ORACLE数据库定时任务—DBMS_JOB
- mysql “group by ”与"order by"的研究--分类中最新的内容
- mysql GRANT with ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO