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

     

       

  • 相关阅读:
    【基本知识】verilog中 `define 的使用
    netsuite弹出窗体的数据回传例子
    js使用confirm对用户的行为进行判断 和prompt
    银行支付 接口
    关于IT公司的预见性
    js fix小数点 和int的区别
    ajax和Java session监听
    NetSuite全功能介绍 totemsuite netsuite开发模块
    财务软件间的财务接口(转载)
    去除eclipise f2功能 去除浮动窗口
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5387329.html
Copyright © 2011-2022 走看看