参数命令化 防止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/