使用参数来防止SQL注入

SQL注入的威力是不可忽视的,下面我们主要介绍防范方法——使用参数化SQL。对于不同的数据供应器都有对就的 Parameter 来表示SQL语句或者存储过程中的各种参数。参数和数据库字段的真实类型——对应,所有参数的值会仅仅被认为一个参数。因此,在参数中任何SQL语句都是没有意义的。

string sConnectionString = @"Server=(local)\SQLEXPRESS;database=Forum;Trusted_Connection=True";
using (SqlConnection conn = new SqlConnection(sConnectionString))
{conn.Open();using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM tbClass WHERE ClassName=@ClassName", conn)){cmd.Parameters.AddWithValue("@ClassName", tb_ClassName.Text);Response.Write(string.Format("共有{0}条记录符合要求<br />", cmd.ExecuteScalar().ToString()));}
}

在这段程序中,我们使用参数代替字符串的拼接。我们需要注意如下几点。

·SQL语句或者存储过程中指定的所有参数必须和Parameters属性中的所有参数对应。

·参数集合的Add()方法有多种重载

cmd.Parameters.AddWithValue("@ClassName", tb_ClassName.Text);//就可以替代cmd.Parameters.Add("@ClassName", SqlDbType.VarChar, 50);
cmd.Parameters["@ClassName"].Value = tb_ClassName.Text;
 

AddWithValue()方法会自动检测参数的类型和长度,对于Add()方法其实也可以省略参数类型和长度。不过为了程序的可读性还是建议你为参数指字类型和长度,当然这个类型和长度需要和数据库字段的真实类型和长度对应。

  我们还注意到,SqlParameter 对象有一个 Diection 方法。对于SQL语句中的参数,这个值没有什么意义,它是用来指定存储过程参数方向。它的值由 ParameterDirection 枚举来定义,共有以下4个类型。

      ·Input

  ·InputOutput

  ·Putput

  ·ReturnValue

转载于:https://www.cnblogs.com/hulang/archive/2010/12/29/1920643.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高通qca9565网卡驱动_修改注册表让Surface Go的无线网卡支持频段选择

我的Surface Go是第一代无LTE版本&#xff0c;无线网卡型号是Qualcomm Atheros QCA61x4A&#xff0c;因为一些原因急需优先选择5GHz频段wifi的功能&#xff0c;因此写下本文。本文的解决方案仅能保证对Qualcomm Atheros QCA61x4A这一型号的网卡有效&#xff0c;对于其他同品牌不…

异或运算^和他的一个常用作用

发现一个新知识&#xff0c;介绍给大家&#xff1a; 二进制异或运算&#xff1a;两者相等为0,不等为1. 这样我们发现交换两个整数的值时可以不用第三个参数。 如a11,b9.以下是二进制 aa^b1011^10010010; bb^a1001^00101011; aa^b0010^10111001; 这样一来a9,b11了。 举一个运…

微服务 前台调用后台的慢的原因_20年IT农民工分享SpringCloud微服务架构实战文档...

前言越来越多的企业使用 SpringCloud 实现微服务架构设计。我们可以看到这样一种现象&#xff1a;不管是全新开发&#xff0c;还是系统重构&#xff0c;大家似乎都在争先恐后地使用微服务。对于一个Java开发人员来说&#xff0c;学习微服务相关知识大有裨益。本文将从架构设计、…

流量专家为114搜索提供权威流量访问统计

一&#xff1a;系统介绍互联网流量实时统计产品是一套网站流量统计分析系统。致力于为所有网站、第三方统计等用户提供网站流量监控、统计、分析等专业服务。 通过互联网流量实时统计产品 &#xff0c;站长可以随时知道自己网站的被访问情况&#xff0c;每天多少人看了哪些网页…

神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(Anaconda软件介绍)

Anaconda软件介绍 Anaconda下载与安装&#xff08;安装之后会有详细步骤&#xff09; 下载地址&#xff1a; Anaconda官网 https://www.anaconda.com/distribution/ 清华大学软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 软件界面及界面功能介绍 界…

wince 自带的web server

同arm linux相比,wince的网络功能用的相对较少.实际上,wince的网络功能并不逊色,比如"remote display control"就能通过网络远程控制终端. wince自带的web server也是功能强大,绝非arm linux上轻量级的boa之类可比(当然arm linux上有很多其他选择).PB工程加上web se…

Wince6.0p上用ASP技术实现Webserver

一 环境的搭建 1. 内核定制时选上vbscript、javascript&#xff0c;wince6.0自到的web服务器就可以解析vbscript、javascript脚本语言。 2. 数据库的安装 项目中使用的是SQLce3.5数据库&#xff0c;它的安装文件随vs2008一起发布&#xff0c;安装文件有三个&#xff1a;sqlce.w…

opengles 3.0游戏开发_开发者们,快来测试Android Q啦!

近日&#xff0c;谷歌正式推出Android Q Beta 1版本及预览版SDK&#xff0c;TestBird已部署到测试机型&#xff0c;开发者们可到TestBird测试平台测试。此次Android Q 做了不少改进&#xff0c;不少尝鲜的用户反映Android Q对全面屏的手势操作更加友好&#xff0c;整体使用体验…

神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(Anaconda软件使用)

Python的运行模式 交互模式 打开命令行窗口 键入 python&#xff0c;激活python交互模式&#xff0c;出现Python提示符 >>> 在提示符 >>> 处, 写入Python语句 回车&#xff0c;得到Python语句的执行结果 退出Python交互模式 在Python命令提示符后&#…

Ubuntu10.04No init found. Try passing init= bootarg解决方案

在正常状态下误敲 fsck 命令后&#xff0c;果断悲剧。屏幕错误提示错误显示类似于&#xff1a;mount: mounting /dev/disk/by-uuid/***************************** on /rootfailed: Invalid argumentmount: mounting /sys on /root/sys failed: No such file or directorymount…

greenfoot推箱子游戏_推箱子小游戏V2.0更新

小游戏实践推箱子V2.0大家好&#xff0c;我是努力学习争取成为优秀的Game Producer的路人猿&#xff0c;我们上期一起学习制作推箱子的简易V1.0版本&#xff0c;学习了如何响应用户的输入以及面对箱子的各种情况&#xff0c;今天我们把这个程序完善&#xff0c;制作V2.0~ 接着上…

ASP+COM技术在嵌入式Webserver中的应用

1 .COM组件介绍 COM(Component Object Model)&#xff0c;即组件对象模型&#xff0c;它是微软公司开发的一种新的软 件开发技术&#xff0c;Microsoft 的许多技术&#xff0c;如 ActiveX、DirectX、以及 OLE 等都是基于 COM 而建立起来的。COM 标准包括规范和实现两大部分&…

神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)

包管理和环境管理(以下操作也可在anaconda界面&#xff0c;进行可视化操作) 包管理&#xff1a;包的安装、卸载、更新和查找等等 conda命令 conda install <包名称列表> 同时安装多个包 conda install numpy scipy 指定安装的版本(&#xff0c;均可) conda instal…

双向(端)链表、栈、队列

双端链表 双端栈 双端队列 从实用角度,感受不出双端队列的好处,但其可以充当栈和队列的角色. 参考资料:http://baike.baidu.com/view/1627726.htm Test static void Main() {var deque new Deque<int>();Console.WriteLine("Stack:");//stackdeque.AddFirst(1…

wince6.0开机自启动应用程序

1、在VS2005下建立一个Win32智能设备项目&#xff0c;取名为ShellExe&#xff0c;编译如下代码&#xff1a; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { WIN32_FIND_DATA fd; HANDLE hdINVALID_HANDLE_VAL…

python语言单行注释符_云计算开发学习笔记:Python3注释

大家在学习各种编程语言的时候都会在代码里面添加一些注释&#xff0c;这个也是为了方便日后对代码的查找和修改&#xff0c;各种编程语言的注释方式略有不同&#xff0c;Python3语言也一样有自己的注释方式&#xff0c;下面我们来了解一下都有哪几种。 确保对模块&#xff0c;…

神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(安装TensorFlow2.0)

创建环境并激活 conda create --name tensorflow2.0 python3.7 activate tensorflow2.0 安装相关软件包&#xff08;conda命令或pip命令2选1&#xff09; conda install numpy matplotlib PIL scikit-learn pandas pip install numpy matplotlib Pillow scikit-learn pand…

python决策树sklearn_python利用sklearn包编写决策树源代码

本文实例为大家分享了python编写决策树源代码&#xff0c;供大家参考&#xff0c;具体内容如下 因为最近实习的需要&#xff0c;所以用python里的sklearn包重新写了一次决策树。 工具&#xff1a;sklearn&#xff0c;将dot文件转化为pdf格式&#xff08;是为了将形成的决策树可…

如何在WINCE中添加WebServer组件

wince 5.0有自带的Web server组件.第三方比较好用的有GoAhead Web Server ,这是开源软件,而且支持Linux. 一、wince 5.0自带的Web server组件 步骤一: 在PB中添加以下组件: Catalog item Sysgen variable Location in Catalog Web Server (HTTPD) SYSGEN_HTTPD Communicat…

arcmap添加WMTS服务

http://xdc.at/map/wmts/ 双击 拖拽 个人公众号