将SqlParameter对象添加到SqlCommand对象中:
SqlCommand cmd=new SqlCommand();
List<SqlParameter> listp=new List<SqlParameter();
foreach (SqlParameter sp in listp)
{
if (sp.Value != null)
{
cmd.Parameters.Add(sp);
}
}
1、执行sql语句
传统做法:
string sql = "insert into userBooks(username,bookname)values('"+username+"','"+bookname+"')";
改进后:
List<SqlParameter> listp = new List<SqlParameter>();
SqlParameter sp = new SqlParameter("@book", bookname); //通过SqlParameter创建对象引用
listp.Add(sp);
listp.Add(new SqlParameter("@user", username)); //匿名对象
string sql = "insert into userBooks(username,bookname)values(@user,@book)";
好处,可以有效地防止sql注入的问题。
2、执行存储过程
执行带参数的存储过程:
SqlCommand cmd = new SqlCommand(storeProcedureName, conn);//storeProcedureName为存储过程的名字
cmd.CommandType = CommandType.StoreProcedure;
List<SqlParameter> listP = new List<SqlParameter>();
listP.Add(new SqlParameter("@param1", bName));//@param1为存储过程中参数的名称
foreach(SqlParameter sp in listP)
{
if(sp.Value != null)
{
cmd.Parameters.Add(sp);
}
}
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);//执行数据库命令,并用于填充dataset或者datatable对象
//cmd.ExecuteNonQuery();//返回受影响的行数
好处,方便用于存储过程中参数的赋值。