110,561
社区成员
发帖
与我相关
我的任务
分享
因为通过SQL语句的方式,有时候存在脚本注入的危险,所以在大多数情况下不建议用拼接SQL语句字符串方式,希望通过SqlParameter实现来实现对数据的操作,针对SqlParameter的方式我们同样可以将其封装成一个可以复用的数据访问类,只是比SQL语句的方式多了一个SqlParameter的参数。
具体代码如下:
1. //<summary>
2. //执行SQL语句,返回影响的记录数
3. //</summary>
4. //<returns>影响的记录数</returns>
5. public static int ExecuteSql(string StrSql, params SqlParameter[] cmdParms)
6. {
7. using (SqlConnection connection = new SqlConnection(conString))
8. {
9. using (SqlCommand cmd = new SqlCommand())
10. {
11. PrepareCommand(cmd, connection, null, StrSql, cmdParms);
12. int rows = cmd.ExecuteNonQuery();
13. cmd.Parameters.Clear();
14. return rows;
15. }
16. }
17.}
18.//<summary>
19.//执行查询语句,返回DataSet
20.//</summary>
21.//<returns>DataSet</returns>
22.public static DataSet Query(string StrSql, params SqlParameter[] cmdParms)
23.{
24. using (SqlConnection connection = new SqlConnection(conString))
25. {
26. SqlCommand cmd = new SqlCommand();
27. PrepareCommand(cmd, connection, null, StrSql, cmdParms);
28. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
29. {
30. DataSet ds = new DataSet();
31. da.Fill(ds, "ds");
32. cmd.Parameters.Clear();
33. return ds;
34. }
35. }
36.}
sqlparameter的使用
2009-4-30
//写法一
2
3 string SelectSQL = "select * from customers where customerid=@customerid";
4 SqlCmd.Connection = SqlConn;
5 SqlCmd.CommandText = SelectSQL;
6 SqlCmd.Parameters.Add("@customerid", SqlDbType.NVarChar, 50).Value = "alfki".ToUpper();
7
8 //写法二
9
10
11 SqlParameter myParameter = new SqlParameter("@userID",SqlDbType.Nvarchar,50")
12 (userID);
13 SqlCmd.parameters.Add(myParameter);
14
//方法3
public int InsertCalendar(int uKey,DateTime cTime,int cTimes,int cFreq,string cTitle,string cContent)
{
int Num = 0;
SqlParameter[] parameters =
{
new SqlParameter("uKey",SqlDbType.Int),
new SqlParameter("cTime",SqlDbType.DateTime),
new SqlParameter("cTimes",SqlDbType.Int),
new SqlParameter("cFreq",SqlDbType.Int),
new SqlParameter("cTitle",SqlDbType.VarChar),
new SqlParameter("cContent",SqlDbType.VarChar)
};
parameters[0].Value = uKey;
parameters[1].Value = cTime;
parameters[2].Value = cTimes;
parameters[3].Value = cFreq;
parameters[4].Value = cTitle;
parameters[5].Value = cContent;
//调用数据操作类DataOper(自己写的)
//"Insert_Calender"是存储过程名称,parameters是传给存储过程的数据集
Num = DataOper.RunParaMeters_Int("Insert_Calender", parameters);
return Num;
}