zoukankan      html  css  js  c++  java
  • 参数化命令相关知识点(防止Sql注入)

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

  • 相关阅读:
    RPC之总体架构
    Netty总结
    数据结构(2)
    数据结构(1)
    java初探(1)之秒杀项目总结
    java初探(1)之秒杀的安全
    java初探(1)之秒杀中的rabbitMQ
    java初探(1)之防止库存为负以及防超买
    java初探(1)之静态页面化——客户端缓存
    java初探(1)之缓存技术
  • 原文地址:https://www.cnblogs.com/liujiayun/p/5319491.html
Copyright © 2011-2022 走看看