將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);
}
}
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+"')";
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注入的問題。
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 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();//返回受影響的行數
好處,方便用於存儲過程中參數的賦值。