讨饭天涯

欢迎参观讨饭猫的垃圾桶
随笔 - 27, 评论 - 270, 引用 - 84

导航

工具

每月存档

广告



访客

 
前两天偶然看到一个SQL查询程序,
利用SqlCommand的Parameters.Add功能,高效而且安全,今天正好用上这个新写法.

cmdTmp1.CommandText="INSERT INTO  Medi_NSFBill (Message,TypeCode) VALUES (@p1,@p2)";
cmdTmp1.Parameters.Clear();
cmdTmp1.Parameters.Add(new SqlParameter("@p1",SqlDbType.VarChar,512));
cmdTmp1.Parameters["@p1"].Value=message;
cmdTmp1.Parameters.Add(new SqlParameter("@p2",SqlDbType.Int));
cmdTmp1.Parameters["@p2"].Value=2001;
cmdTmp1.ExecuteNonQuery();
cmdTmp1.Parameters.Clear();

这个写法的好处是:
1 利用SqlCommand的参数自动检查特性过滤非法字符,
2 避免STRING串相加的低效率工作

坏处是:
代码冗长

相关文章

打印 | 张贴于 2003-09-15 23:41:00 | Tag:暂无标签

留言反馈

#re: 一个高效安全的SQL查询写法 编辑
没错,用SQLCommand确实可以避免许多SQLInjection问题,而String.format却连最基本的单引号都对付不了。
2004-12-31 21:55:00 | [匿名用户:Nleven]
#回复: 一个高效安全的SQL查询写法 编辑
String.Format 会导致一种常见的漏洞,可以植入比如delete之类的语句,俗称SQL注入攻击
2004-03-01 21:51:00 | [匿名用户:carfield]
#回复: 一个高效安全的SQL查询写法 编辑
delphi里以前就已经有了。只是把@改成:,但Prepare Compile好像是以前没有的。我开始也是用一堆字符串加来加去,后来发现这种方法的确很不错的。
2003-11-08 19:04:00 | [匿名用户:ithink]
#回复: 一个高效安全的SQL查询写法 编辑
String.Format其实并不好玩,它的处理还是在ADO.NET的外部,比如不能实现利用SqlCommand的参数自动检查特性。另外,使用Parameters还可以实现一个优点,即Prepare Compile,即对你的SqlCommand进行预编译,从而提高访问效率的。
2003-09-16 11:30:00 | [匿名用户:开心就好]
#回复: 一个高效安全的SQL查询写法 编辑
我喜欢用String.Format()
比如:String.Format("SELECT * FROM Table WHERE Name = {0}", sName);
2003-09-16 10:53:00 | [匿名用户:大梨]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System