zoukankan      html  css  js  c++  java
  • 参数命令化 防止Sql注入

    1.先在数据库中完成储存过程

    create proc usp_selectStudent
    @studentName nvarchar(10)
    as
    select * froom student where StudentName=@studentNanme
    go

    2.然后再C#程序中调用储存过程防止Sql注入

        //1.1  连接字符串
        string str = "data source=.;initial catalog=MySchool;uid=sa;pwd=6375196";
        //1.2 创建连接对象    呵呵
        SqlConnection con = new SqlConnection(str);
        //创建SqlCommand 对象的第二种方式
        //从Con出发
        //1.3  从连接对象构建命令对象
        SqlCommand cmd = con.CreateCommand();
        //1.4  给命令对象需要执行的SQL语句赋值
        cmd.CommandText = "usp_selectInfo";
        //告诉SQL引擎我传递过来的是        存储过程的名称
        //1.5  我们告诉SQL引擎   我通过网线送过去的字符串是  一个存储过程的名字啊
         cmd.CommandType= CommandType.StoredProcedure;
         //1.6   构建存储过程的输入参数,并且给参数赋值,
         //参数的名称必须和定义存储过程的输入参数名称完成相同
         SqlParameter para=new SqlParameter("@sex","1");
         //1.7   将参数和命令对象的参数集合绑定
         cmd.Parameters.Add(para);
         //1.8  打开数据库连接通道真正建立
         con.Open();
         //1.9   构建一个适配器 )卡车( 对象
         SqlDataAdapter da=new SqlDataAdapter();
         //1.10  将已经初始化好的cmd对象和da绑定
         da.SelectCommand = cmd;
         //1.11   构建内存中的数据集对象
         DataSet ds=new DataSet();
         //1.12   从DB   拎    数据到DataSet 中的一张表
         da.Fill(ds, "StuInfo");
         //1.13    将dgv的数据源指向表
         dgvList.DataSource = ds.Tables["StuInfo"];
         //1.14    连接关闭
          con.Close();
    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    SqlServer查询所有表名 查询表的所有列名
    IIS控制txt文件的访问
    CHM文件打不开
    [转]VS 2010项目中添加lib库
    SqlServer游标
    [转]_beginthread(), _beginthreadex()与CreateThread()的区别
    jquery radio快速度取值
    linx niginx下php无法创建文件夹及文件
    [转载]无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount
    使用DateGrid的ItemCommand的一点心得
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5492215.html
Copyright © 2011-2022 走看看