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();//返回受影响的行数 好处,方便用于存储过程中参数的赋值。 本文出自 “net王洪桥” 博客,请务必保留此出处http://hnpywhq.blog.51cto.com/1803497/349697