加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SqlParameter的作用与用法

发布时间:2021-05-20 14:33:57 所属栏目:大数据 来源: https://blog.csdn.net/kasama1
导读:SqlParameter的作用与用法 一般来说,在更新DataTable或是DataSet时,如果不采用sqlParameter,那么当输入的sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接sql语句来进行注入攻击。 1 2 3 4 5 6 7 8 9 10 11 12 13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 string? sql =?"update Table1 set name = 'Pudding' where ID = '1'";//未采用sqlParametersqlConnection conn =?new? sqlConnection();conn.ConnectionString =?"Data Source=.sqlExpress;Integrated Security=true;AttachDbFilename=|DataDirectory|Database.mdf;User Instance=true"//连接字符串与数据库有关sqlCommand cmd =?sqlCommand(sql,conn); try{????conn.Open();????return(cmd.ExecuteNonQuery()); }catch? (Exception) {return? -1; throw;} finally{ conn.Close();}

上述代码未采用sqlParameter,除了存在安全性问题,该方法还无法解决二进制流的更新,如图片文件。通过使用sqlParameter可以解决上述问题,常见的使用方法有两种,Add方法和AddRange方法。

一、Add方法

4 sqlParameter sp =?sqlParameter("@name",?"Pudding");cmd.Parameters.Add(sp); sp =?"@ID""1");cmd.Parameters.Add(sp);

  该方法每次只能添加一个sqlParameter。上述代码的功能是将ID值等于1的字段name更新为Pudding(人名)。

二、AddRange方法

2 sqlParameter[] paras =?sqlParameter[] {?),?) };cmd.Parameters.AddRange(paras);   显然,Add方法在添加多个sqlParameter时不方便,此时,可以采用AddRange方法。   下面是通过sqlParameter向数据库存储及读取图片的代码。 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 public? int? SavePhoto(photourl){ FileStream fs =?FileStream(photourl,FileMode.Open,FileAccess.Read);//创建FileStream对象,用于向BinaryReader写入字节数据流BinaryReader br =?BinaryReader(fs);//创建BinaryReader对象,用于写入下面的byte数组 byte[] photo = br.ReadBytes((int)fs.Length);?//新建byte数组,写入br中的数据br.Close();//记得要关闭br fs.Close();//还有fs"update Table1 set photo = @photo where ID = '0'"; sqlConnection();;"@photo"try {????????conn.Open(); ????????(cmd.ExecuteNonQuery());} (Exception){ -1;; }finally {conn.Close(); }} ? void? ReadPhoto(url) {"select photo from Table1 where ID = '0'"; sqlConnection();;try {????????????conn.Open(); sqlDataReader reader = cmd.ExecuteReader();//采用sqlDataReader的方法来读取数据????????????if? (reader.Read()) {????????????????[] photo = reader[0]?as? [];//将第0列的数据写入byte数组 ????????????????FileStream(url,FileMode.CreateNew);创建FileStream对象,用于写入字节数据流fs.Write(photo,photo.Length);//将byte数组中的数据写入fs //关闭fs} reader.Close();//关闭reader} (Exception ex){ ;} finally{ conn.Close();} }}

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

SqlParameter的作用与用法

  一般来说,在更新DataTable或是DataSet时,如果不采用sqlParameter,那么当输入的sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接sql语句来进行注入攻击。

    推荐文章
      热点阅读