SQL参数化查询讲座(二)

SQL语句如果采用参数化查询的方式,则表示为“SELECT column1, column2, … FROM table1
WHERE param_column1 = ? AND param_column2 = ? ”。其中两个问号(?)是待定的数据列的值。在有些开发平台,问号的地方可能用有指
定标记的命名参数代替,如“SELECT column1, column2, … FROM table1 WHERE param_column1 = @param1 AND param_column2 = @ param2
”。不管是问号还是命名参数,咋一看都似乎与字符串格式化差不多。不过,在参数化查询中,程序直接把这个包含待定值的SQL语句提交给数
据库,由数据库引擎为之生成查询计划。之后,程序以参数的方式提供这些值。数据库引擎把参数中的值应用到查询计划中,然后执行查询结
果。如果改变参数的值后再执行,则得到不同的查询结果,但SQL语句不需要重新提交,查询计划也不需要重新生成,参数的修改对查询计划没
有影响。哪怕参数中包含精心设计的特殊字符,也不会形成SQL注入式攻击。参数改变的次数越多,则查询计划的重用性越高。
与程序设计语言中的函数或过程类似,SQL语句的参数也可以分为输入参数、输出参数及输入输出参数。其中输入参数最为常见。上面的查询例
子中的两个参数都是输入参数。参数的类型可以是整数、浮点数、字符串乃至二进制数据。采用参数化查询,可以很方便地导入二进制数据。
更多其他信息可登录http://www.qingniao.info

作者: huliaohaixiao   发布时间: 2011-05-24

路过。。。。。然后在飘回来




























祛痘

作者: 孔届保   发布时间: 2011-06-11