绑定变量的意思是,语句是语句,变量是变量,在语句里只有占位符,没有数据。就是说,任何数据不会成为语句,这就彻底杜绝了sql注入。
一般人写数据库程序,懒得用绑定,都是把值写在sql语句里,这就会造成SQL注入。这样的sql不仅不安全而且效率低。
在数据库引擎里,有个语句解析器,把一个sql语句的文本解析成执行计划。如果遇到相同语句,就会避免解析,直接引用执行计划,叫做软解析,这可以提高执行效率。直接写值,造成每个sql都不同,无法进行软解析。
还有游标,有人认为游标开销大。但是必须要先打开游标才能绑定变量(这时sql语句已经没用了)。就是打开游标时有开销。
如果在后续操作中保持打开状态,就可以无代价的连续操作。
数据库包装器帮你做了这一切,所以省事,高效。
之所以可行,就是靠模板,生成sql语句,开游标,绑定变量,,,,,全靠模板。
全套泛型操作,都是运行时泛型,编辑器期没法办。程序规模比较大,而且编译时不知道将来来的是啥数据。
运行时泛型,操作的全是指针。
【 在 z16166 的大作中提到: 】
: 知道啊,prepared statement的bind操作
:
--
修改:ylh1969 FROM 221.221.52.*
FROM 221.221.52.*