【发布时间】:2012-05-29 15:42:51
【问题描述】:
有关更新数据库的 ColdFusion 10 文档中有一个关于 Database-related enhancements in ColdFusion 10 的部分。该页面提到现在支持CF_SQL_NVARCHAR 等,但没有关于它们的详细信息。此外,cfqueryparam documentation 尚未更新以包含它们的存在。
ColdFusion 9 documentation for cfqueryparam 提到 CF_SQL_VARCHAR 映射到 MSSQL 中的 varchar。这是真的,除非 ColdFusion 管理员 datasource settings 启用了 String Format 设置。在这种情况下,CF_SQL_VARCHAR 映射到 nvarchar。这个记录不充分的功能是一个可以在 ColdFusion 中 cause performance issues 的 hack。
所以很高兴他们介绍了CF_SQL_NVARCHAR,但最好了解它的工作原理。它只是CF_SQL_VARCHAR 的别名,让它毫无意义?它总是以nvarchar 发送字符串吗?如果是这样,CF_SQL_VARCHAR 是否总是发送 varchar?
我希望为了向后兼容,它是这样实现的:
如果 String Format 启用,CF_SQL_VARCHAR 和 CF_SQL_NVARCHAR 都映射到 nvarchar。
如果String Format 被禁用,则CF_SQL_VARCHAR 映射到varchar 和CF_SQL_NVARCHAR 映射到nvarchar。
这意味着任何 CF10 之前的网站都可以迁移到 CF10 并正常工作,并且具有与 CF10 之前相同的性能注意事项。
新网站或重写所有查询以匹配 CF_SQL_VARCHAR 和 CF_SQL_NVARCHAR 与数据库设计的网站不会受到 CF10 之前不可避免的性能损失。
任何人都可以确认是否是这种情况;如果有官方的东西更好?
【问题讨论】: