,,详解C#中SqlParameter的作用与用法

,,详解C#中SqlParameter的作用与用法

本篇文章主要介绍了C#中SqlParameter的作用与用法,因为通过结构化查询语言语句的方式,有时候存在脚本注入的危险,所以在大多数情况下不建议用拼接结构化查询语言语句字符串方式,希望通过SqlParameter实现来实现对数据的操作。

一般来说,在更新数据表或是资料组时,如果不采用SqlParameter,那么当输入的结构化查询语言语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接结构化查询语言语句来进行注入攻击。

字符串结构化查询语言

='更新

表1 set name="Pudding ",其中ID=" 1//未采用SqlParameter

SqlConnection

conn=new SqlConnection();

连接字符串

='数据

来源=。\ \ SQLExpress集成安全性=trueAttachDbFilename=|数据目录| \ \数据库。中纤板;user Instance=true ';//连接字符串与数据库有关

SqlCommand

cmd=new SqlCommand(sql,

conn);

尝试

{

conn . Open();

返回(cmd .ExecuteNonQuery());

}

捕捉(异常)

{

return-1;

扔;

}

最后

{

conn . Close();

}

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

一、Add方法

SqlParameter

sp=new SqlParameter('@name ',' Pudding ');

cmd .参数。添加(sp);

sp

=new SqlParameter('@ID ',' 1 ');

cmd .参数。添加(sp);

该方法每次只能添加一个SqlParameter。上述代码的功能是将身份证明值等于一的字段名字更新为布丁(人名)。

二、AddRange方法

SqlParameter[]

paras=新的SqlParameter[]

{新SqlParameter('@name ',' Pudding '),新SqlParameter('@ID ',' 1 ')

};

cmd .参数。添加范围(段落);

显然,添加方法在添加多个SqlParameter时不方便,此时,可以采用AddRange方法。

下面是通过SqlParameter向数据库存储及读取图片的代码。

public int保存照片(string photourl)

{

文件流

fs=新文件流(photourl,

文件模式.打开,文件访问。阅读);//创建文件流对象,用于向二进制阅读器写入字节数据流

二进制阅读器

br=新的二进制阅读器(fs);//创建二进制阅读器对象,用于写入下面的字节数组

字节[]

照片=br .ReadBytes((int)fs .长度);//新建字节数组,写入英国铁路公司中的数据

br .close();//记得要关闭英国铁路公司

fs .close();//还有满量程

字符串结构化查询语言

='更新

表1设置photo=@photo其中ID=" 0

SqlConnection

conn=new SqlConnection();

连接字符串

='数据

来源=。\ \ SQLExpress集成安全性=trueAttachDbFilename=|数据目录| \ \数据库。中纤板;user Instance=true ';

SqlCommand

cmd=new SqlCommand(sql,

conn);

SqlParameter

sp=新的SqlParameter('@photo ',

照片);

cmd .参数。添加(sp);

尝试

{

conn . Open();

返回(cmd .ExecuteNonQuery());

}

捕捉(异常)

{

return-1;

扔;

}

最后

{

conn . Close();

}

}

公共作废ReadPhoto(字符串网址)

{

字符串结构化查询语言

='选择

ID="0 "的表一中的照片;

SqlConnection

conn=new SqlConnection();

连接字符串

='数据

来源=。\ \ SQLExpress集成安全性=trueAttachDbFilename=|数据目录| \ \数据库。中纤板;user Instance=true ';

SqlCommand

cmd=new SqlCommand(sql,

conn);

尝试

{

conn . Open();

SqlDataReader

reader=cmd .ExecuteReader();//采用SqlDataReader的方法来读取数据

如果(读者. Read())

{

字节[]

photo=reader[0]as byte[];//将第0列的数据写入字节数组

文件流

fs=新文件流(url,文件模式.新建);创建文件流对象,用于写入字节数据流

fs .写(照片,0,照片。长度);//将字节数组中的数据写入满量程

fs .close();//关闭满量程

}

读者. close();//关闭读者

}

接住(异常

ex)

{

扔;

}

最后

{

conn . Close();

} }}

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: