怎么样写一段高效,安全的sql查询代码

看一看这段代码,让我们来看看主要存在的问题

//设置SQL语句
insertstr="insert into userinfo(name,password,email,phone,mobile,post,address) VALUES(''";
insertstr += this._name.Trim()  
;+ "'',''";
insertstr += this._password.Trim() +"'',''";
insertstr += this._email.Trim() +"'',''";
insertstr += this._phone.Trim() +"'',''";
insertstr += this._mobile.Trim() +"'',''";
insertstr += this._post.Trim() +"'',''";
insertstr += this._address.Trim() +"'')";

1、效率问题
首先看看上边这段代码,效率太低了,这么多的字符串连接本身效率就够低的了,再加上这么些trim(),完全没有必要。

2、正确性问题
这段代码太脆弱,一个单引号就可以使整个程序崩溃。

3、安全性
同上,利用单引号我可以做很多事,比如运行个xp_cmd命令,那你就惨了,呵呵。

那么,怎样来写呢,上面这段代码可以改成这样:
string strSql = "insert into sometable (c1 , c2 , c3 , ...) values(@c1 , @c2 , @c3,...)"
SqlCommand myCommand = new SqlCommand(strSql , myConn)
try
{
myCommand.Parameters.Add(new SqlParameters("@c1" , SqlDataType.VarChar , 20)
myCommand.Parameters["@c1"].Value = this._Name ;
....
//有几个加几个
....
}
catch(...)
...

这样呢,既可以避免低效率的字符串连接,又可以利用sqlcommand参数有效性检测来避免非法字符的出现,并且由于这种parameter方式是预编译的,效率更高。

一举数得,何乐而不为呢。

时间: 2024-11-29 06:21:20

怎么样写一段高效,安全的sql查询代码的相关文章

我想写一个关于json串的sql查询,具体请看下面,

问题描述 我想写一个关于json串的sql查询,具体请看下面, 我想写一个关于json串的sql查询,比如说我数据库的某一字段是'BZ',内容是{name:123,age: 14},{name:456,age: 15}这样的,请问如何写查询,比如说通过name的值来查找 age的值,我要比如说我要查的name=123的 那么该'BZ'字段显示的就是 14 ,各位大神帮帮忙啦,小弟不胜感激!!! 解决方案 select max(case getname(BZ) when '123' then ge

实现按部门月卡余额总额分组统计的SQL查询代码

分组|统计 陈优章的专栏 (原创,到现在为至最为复杂的SQL查询代码)实现按部门月卡余额总额分组统计的SQL查询代码(在Ms SQL Server中调试通过) SELECT dp.dpname1 AS 部门, cust_dp_SumOddfre.sum_oddfare AS 当月卡总余额FROM (SELECT T_Department.DpCode1, SUM(custid_SumOddfare_group.sum_oddfare)               AS sum_oddfare  

怎么样写一段高效,安全的sql查询代码---(很基础,但是大家很容易忽略的)

安全 看一看这段代码,让我们来看看主要存在的问题 //设置SQL语句            insertstr="insert into userinfo(name,password,email,phone,mobile,post,address) VALUES('";            insertstr +=  this._name.Trim() + "','";            insertstr +=  this._password.Trim()

求大神用C#写一段关于C#仓库管理系统的代码

问题描述 基本要求:仓库中货物信息包括:货物编号.货物名称.货物单价.货物数量等.功能要求:1)增加和删除货物信息2)按编号或名称查询货物信息3)显示库存量不足一定值(由用户输入)的货物信息4)显示所有货物的信息5)对所有货物信息读写文件 解决方案 解决方案二:你去源码网站看看有没有解决方案三:10W不能再低了...解决方案四:这哪是一段代码可以解决的啊.去51aspx看看,一大堆解决方案五: 解决方案六:引用2楼crystal_lz的回复: 10W不能再低了... 我一高中同学找我让我给他做个

帮忙写一段sql,重复数据取时间最近的怎么写?

问题描述 帮忙写一段sql,重复数据取时间最近的怎么写? 表如下学号 姓名 成绩 时间1 小明 88 9-5 1 小明 80 9-4 1 小明 70 9-3 输出结果学号 姓名 成绩 时间 1 小明 88 9-5 要求不用top.order by做 解决方案 select * from 表名 where 时间列=(selct max(时间列) from 表名) 解决方案二: 人在不,你是需要找出表中有一样的数据 并且拿出时间最大的 还是只有这三条数据找最大的啊

sql-SQL写一段语句提醒每年员工生日日期

问题描述 SQL写一段语句提醒每年员工生日日期 SQL如何写一段语句提醒每年员工生日日期,到期前10天提醒,谢谢各位! 解决方案 参考一下这个 sqlserver 员工出生日期格式是:1990-6-26 有若干个员工 写出SQL(Sql Server 2008)根据不同查询时间(getdate()) 查询出所有满足未来45天内生日的员工信息 还是自己贴答案大家分享下吧 SELECT E.Code,E.Name,E.BornDate,D.NAme AS sDept,ZW.Name AS SZhiW

用函数模板,写一个简单高效的 JSON 查询器的方法介绍_javascript技巧

JSON可谓是JavaScript的亮点,它能用优雅简练的代码实现Object和Array的初始化.同样是基于文本的数据定义,它比符号分隔更有语义,比XML更简洁.因此越来越多的JS开发中,使用它作为数据的传输和储存. JS数组内置了不少有用的方法,方便我们对数据的查询和筛选.例如我们有一堆数据: 复制代码 代码如下: var heros = [        // 名============攻=====防=======力量====敏捷=====智力====        {name:'冰室女巫

写一段js代码,实现分页展示与导航功能,使用对象模式

问题描述 写一段js代码,实现分页展示与导航功能,使用对象模式 我是个js入门者,技术总监给我出了这个问题,我想问一下使用对象模式是什么意思,导航功能又是指什么,有高手给我指点一下吗?最好有代码,非常谢谢! 解决方案 对象模式就是使用js中的对象模型,定义对象,将数据和函数封装起来.导航功能分为三部分,一个是导航菜单,用于定位栏目的链接,一个是站点地图,层次展示站点全部页面,一个是路径指示器,包含当前页和首页之间关系的列表,几乎所有的网站都有,只要你留心就可以看到. 解决方案二: 导航,从字面应

SQL查询连续号码段实现实例

下文将教您在数据库中如何使用SQL查询连续号码段的方法,供您参考,如果您对SQL查询方面感兴趣的话,不妨一看,对您会有所帮助. 有一个表结构, fphm,kshm 2014,00000001 2014,00000002 2014,00000003 2014,00000004 2014,00000005 2014,00000007 2014,00000008 2014,00000009 2013,00000120 2013,00000121 2013,00000122 2013,00000124