zoukankan      html  css  js  c++  java
  • 参数化命令相关知识点之==================防止SQl的注入

    一: 使用参数化命令查询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

     

       

  • 相关阅读:
    极域电子教室 e-Learning Class V4 2010专业版 学生机 卸载方法
    浅谈IT员工管理
    apacheserver下载、安装、配置
    Android BLE开发之Android手机搜索iBeacon基站
    Qt编程18:Qt调色板QPalette的使用
    二叉树的操作
    Android应用开发多语言drawable目录
    Mybatis文档阅读笔记(明日继续更新...)
    《Spark快速大数据分析》—— 第六章 Spark编程进阶
    Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5387329.html
Copyright © 2011-2022 走看看