怎么样写一段高效,安全的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-09-09 13:49:57

怎么样写一段高效,安全的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() +"'',''"; insertstr +=

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

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

asp 防止SQL注入代码_ASP基础

把下面代码复制到每个文件头部就可以防止SQL注入了,写程序安全最重要 :) <% Dim Fy_Url,Fy_a,Fy_x,Fy_Cs(),Fy_Cl,Fy_Ts,Fy_Zx '---定义部份 头------ Fy_Cl = 1    '处理方式:1=提示信息,2=转向页面,3=先提示再转向 Fy_Zx = "Error.Asp"  '出错时转向的页面 '---定义部份 尾------ On Error Resume Next Fy_Url=Request.ServerVaria

尽可能写&amp;quot;友好&amp;quot;的&amp;quot;Javascript&amp;quot;代码_基础知识

在Search Engine的robot搜索时,针对的type,text/html此类"文本"的友好度是最高的(现阶段text/xml除外),而text/javascript此类的友好度不理想,如果robot还要判断DHTML代码的话,那这个复杂度也是较高,而且划不来 因此,在DHTML编程时,如果要提升代码的友好度.采用的方法,较好的方法是"尽可能是把DHTML的代码简化成没有HTML的代码".这句话如何理解? e.g: 一个javascript menu. 方法

帮忙写一段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:'冰室女巫