快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

怎么样写一段高效,安全的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方法是预编译的,效率更高。

一举数得,何乐而不为呢。
返回类别: 教程
上一教程: 网页加速处理-页面减肥与减化
下一教程: 服务器端调用WINZIP命令行对上传的多个文件打包压缩

您可以阅读与"怎么样写一段高效,安全的SQL查询代码"相关的教程:
· 编写安全的ASP代码
· Microsoft SQL Server 7.0安全问题
· ASP创建EXCHANGE用户的一段代码
· Mssql和Mysql的安全性分析
· 关于ACCESS数据库表改名的一段代码
    微笑服务 优质保证 索取样品