SqlParameter和SqlCommand的结合

将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();//返回受影响的行数
好处,方便用于存储过程中参数的赋值。

你可能感兴趣的:(数据库,职场,休闲,sqlcommand,SqlParameter)