独自幸福快乐五种食谱改善皮肤粗糙依依不舍孤独
我经常为自己在开发时采用“赶紧做完手头活再赶其它任务”的方法而感到一种罪恶感。我之所以这样,并不是因为我懒惰,而是因为这可以节省时间。当开发一个应用程序时,事情常常搅到一起,这样,用“赶紧做完”思路实现的数据访问方法很可能保留到最终的应用程序之中。 内联SQL(inline SQL)的工作效率其实并不高(特别是在SQL语句需要循环执行的情况下)新炮塔与旧底盘的结合不存在“排异现象”,这是因为SQL指令在每次执行时,数据库都需要解析它以验证它的有效性,然后数据库再编译或者解释SQL指令。不过采用预存程序(stored procedure)时,情况就大不一样了,这是因为SQL指令已经被解析和编译过了。但是因为创建以及修改预存程序要花费较多的时间,所以采用预存程序的解决方案要比采用内联SQL的解决方案实现起来一般要花费更多的时间。
当时间不允许你采用“暂时利用内联SQL,稍后用预存程序加以取代”的方法实现数据访问的情况下,你需要一个折中的方案。预编译SQL就是这种折中方案,它提供了内联SQL的灵活性,如果方法得当,它也可以像预存程序那样提供较高的运行速度。
预编译SQL的优点
使用预编译SQL的最大好处就是你所需要的所有的东西都在你的手头上。的确是这样的,你不需要额外东西,当然,除非你不知道ADO命令对象以及命令参数。请对比一下代码清单A和代码清单B,前者的JavaScript简单的用内联SQL的方法执行了SQL语句,而后者使用了预编译SQL,这两者的所实现的功能是相同的。
尽管当代码清单B比代码清单A显得冗长一些,但是在循环设置参数值(如lue)时或者循环执行指令(如ecute)时,预编译SQL的运行速度比内联SQL更快。循环次数越多,使用预编译SQL方法所节省的时间也就越多。
预编译SQL的缺点
预编译SQL也不是十全十美的。它的第一个也是最大缺点就是应用程序在它有可能需要使用预编译SQL的时间段内都必须维持命令对象(command object)。从表面上来看,这好像没什么大不了的,但是当处理大量命令对象时,你的系统资源可能很快就会不足。
预编译SQL的第二个缺点是它的参数不能按照名字而是用问号占位符(?)进行引用(而预存程序则不存在这个问题),而且参数依赖于它们在SQL命令中所处的位置以及对应代码。有一点很重要,需要注意:表格栏目顺序必须与命令中的参数顺序相同。在这个限制之下,为了清晰起见,变量的名字最好有意义大年初一谁丢了钱包? 民警挨家挨户上门找。牢记这一点之后,请考虑清单C所给出的代码片断。
如果变量的名字没有意义,如命名为prmADOaaaa、prmADObbbb和prmADOcccc,那么代码清单C给出的例子就显得相当零乱,所用参数的意义也很难去辨认。
用途不仅仅体现在SELECT语句上
预编译SQL的用途并不局限在使用SELECT查询上。同样的技术也可以运用在SQL INSERT、UPDATE以及DELETE语句上。
内蒙古治疗白癜风哪家医院好莱芜什么医院治疗白癜风四平治疗白斑病费用-
清理猫咪脱落的毛发的方法位置
烘焙2022年06月13日
-
清明时节别人祭奠人她祭奠狗位置
烘焙2022年06月13日
-
使用最简单的方法训练出最优秀的金毛犬位置
烘焙2022年06月13日
-
使宠物狗毛发有光泽的技巧位置
烘焙2022年06月13日
-
你用心的了解过哈士奇的生活饮食吗位置
烘焙2022年06月13日
-
你知道为什么泰迪犬那么喜欢挑食吗位置
烘焙2022年06月13日