参数命令化 防止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();

 

posted @ 2016-05-14 11:33  白兴强  阅读(286)  评论(0编辑  收藏  举报