关于给存储过程传递参数的问题
新人问题总是很多,麻烦高手们,先谢谢了!下面是一段调用存储过程的代码,红色部分的代码我已经遇到过好几遍了,知道Parameter对象可以防止SQL注入,实现参数化查询。但我就是不理解Parameter的用法和它到底是运作的,Parameter到底是一个什么样的对象?
困惑:
SqlParameter sex = new SqlParameter("@sex", SqlDbType.VarChar, 5);//定义了一个SqlParameter对象sex,那么@sex是sex的参数?sex.value获取的值是不是就是@sex的值?如果是的话,有三个@sex这样的变量(@sex1,@sex2,@sex3)那sex.value表示的是谁的值?
mycmd.Parameters.Add(sex);//这句话的意思到底是什么哦?
将SqlParameter对象sex添加到command的Parameters集合中?Parameters集合又是啥?添加到Parameters集合中和传递参数有什么关系,其实这个参数到底是怎么传过去的我就是搞不清楚,不理解!执行到这句话的时候存储过程被调用了没有?怎么没有用到mycmd.ExecuteNonQuery();
SqlConnection mycon = getconnection();
mycon.Open();
SqlCommand mycmd = new SqlCommand();
= CommandType.StoredProcedure;
mycmd.Connection = getconnection();
= "get_student";
SqlParameter sex = new SqlParameter("@sex", SqlDbType.VarChar, 5);
sex.Value = DropDownList1.Text;
mycmd.Parameters.Add(sex);
SqlDataAdapter da = new SqlDataAdapter(mycmd);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();