是使用cfsqltype的好习惯吗?

时间:2012-03-19 22:11:46

标签: sql coldfusion railo cfml

编码cfqueryparam或cfprocparam时,cfsqltype是可选的。但是,我经常看到它编码。指定cfsqltype有什么好处吗?

2 个答案:

答案 0 :(得分:16)

在将查询输入传递到查询之前,主要的好处是对查询输入进行额外的完整性检查。此外,在日期时间值的情况下,如果指定了cfsqltype =“CF_SQL_DATE”或=“CF_SQL_TIMESTAMP”,我相信CF会正确地将日期时间字符串转换为正确的数据库格式。

此外,我认为这使得未来的开发人员在阅读您的代码时可以更清楚地看到类型除外。

答案 1 :(得分:13)

我想补充杰克的评论。在大多数RDBMS中,数据库需要通过类型查找来运行变量,以确保它是正确的类型,或者可以隐式地转换为正确的类型。 DB不只是在表或视图中抛出“type Any”变量。它必须在执行计划中构建正确的类型。因此,如果您没有提供类型,则要求DB“弄明白”。

然而,当您指定要抢占或预先限定数据类型的类型时。引擎知道驱动程序正在呈现某种类型的变量,然后可以直接使用它或直接派生它。

请记住,虽然安全性是使用cfqueryparam的一个很好的理由,但这只是一个原因。另一个原因是创建可以高效执行的正确准备的语句 - 理想情况下“弹出”数据库服务器上的执行计划缓存。