SqlParameter的作用与用法
时间:2011-05-21 来源:RainSun
一般来说,在更新DataTable或是DataSet时,如果不采用SqlParameter,那么当输入的Sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接Sql语句来进行注入攻击。
string sql = "update Table1 set name = 'Pudding' where ID = '1'";//未采用SqlParameter SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=.\\SQLExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|\\Database.mdf;User Instance=true";//连接字符串与数据库有关 SqlCommand cmd = new SqlCommand(sql, conn); try { conn.Open(); return(cmd.ExecuteNonQuery()); } catch (Exception) { return -1; throw; } finally { conn.Close(); }
上述代码未采用SqlParameter,除了存在安全性问题,该方法还无法解决二进制流的更新,如图片文件。通过使用SqlParameter可以解决上述问题,常见的使用方法有两种,Add方法和AddRange方法。
一、Add方法
SqlParameter sp = new SqlParameter("@name", "Pudding"); cmd.Parameters.Add(sp); sp = new SqlParameter("@ID", "1"); cmd.Parameters.Add(sp);
该方法每次只能添加一个SqlParameter。上述代码的功能是将ID值等于1的字段name更新为Pudding(人名)。
二、AddRange方法
SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@name", "Pudding"), new SqlParameter("@ID", "1") }; cmd.Parameters.AddRange(paras);显然,Add方法在添加多个SqlParameter时不方便,此时,可以采用AddRange方法。
相关阅读 更多 +