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

     

       

  • 相关阅读:
    走近Qt
    C: 数组形参
    C++: 单例模式和缺陷
    c++: 获取delete[]中的数组大小
    像素格式
    BMP图像格式
    Sublime Text 格式化JSON-pretty json
    Sublime Text3配置SublimeREPL快捷键的方法(Python)
    Sublime Text3安装SublimeREPL插件以及快捷键设置
    Sublime Text3 注册码激活码(持续更新中2018-11-20)
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5387329.html
Copyright © 2011-2022 走看看