【问题标题】:Coldfusion oracle jdbc Macromedia vs ThinColdfusion oracle jdbc Macromedia vs Thin
【发布时间】:2014-03-04 16:04:16
【问题描述】:

我对此进行了大量搜索,但似乎无法明确列出 Macromedia 与瘦 Oracle JDBC 驱动程序的局限性,因为它们之间存在很大差异,我不理解。

我有两个数据源连接到同一个数据库,在 CF 9.0.1 中使用相同的凭据:

    • jdbc url = jdbc:oracle:thin
    • 驱动程序 class= oracle.jdbc.OracleDriver

  1. 宏媒体

    • jdbc url = jdbc:macromedia:oracle
    • 驱动程序 class= macromedia.jdbc.MacromediaDriver

插入查询

<cffunction name="create" access="public" output="false" >  
  <cfargument name="allocation_code" required="no"  type="string"/>           
  <cfquery datasource="#application.DSN#" name="qResult" result="r" >
     insert into table1 s
     (s.data)
     values (
        <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.data#">
     )
  </cfquery>
  <cfreturn r.ROWID>
</cffunction>
  • 瘦数据源失败(给出错误 ROWID 不存在)

  • Macromedia 数据源正常


dbinfo 通话中

var columnList = new dbinfo( datasource="#application.DSN#"
                             , table="table1").columns();
  • 瘦数据源正常

  • Macromedia 数据源从不处理,最终给出 cfoutput 超时错误


在带有 RC1 游标的存储过程中

<cfstoredproc procedure="schema.myproc"  datasource="#application.DSN#" > 
    <cfprocparam  type = "IN"
        cfsqltype="cf_sql_varchar" 
        value="#Event.getValue("entityid")#"
        > 
    <cfprocresult name="RC1"> 
</cfstoredproc>
  • 调用“schema.myproc”时出现精简数据源错误、参数数量或类型错误

  • Macromedia 数据源正常


是否有我可以参考的差异或优缺点列表?或者这只是我享受的试错?我是否应该只有两个不同的数据源并在其中一个不起作用时根据需要调用它们?任何见解都值得赞赏。

【问题讨论】:

  • 您从哪里获得 Macromedia 驱动程序?这是 ColdFusion 9 标准版还是企业版?
  • ColdFusion 9.01 仍将其驱动程序列为 Macromedia。没有什么特别的事情要做
  • @iKnowKungFoo 我已经安装了标准本地并且能够配置它,所以两者都
  • 如果这是本地的,那么您拥有 Enterprise 30 天,然后它会转换为 Developer 版本。因此,您拥有 CF 附带的 Oracle 驱动程序,但生产中的 Standard 无法访问该驱动程序 IIRC。您将在生产中使用哪个版本的 CF?
  • @iKnowKungFoo 我将在生产中使用 Enterprise,使用标准开发

标签: oracle jdbc coldfusion coldfusion-9


【解决方案1】:

是否有我可以参考的差异或优缺点列表? - 我怀疑您需要阅读每个驱动程序的文档以获取该信息。请参阅Oracle documentation,了解您安装的特定版本的瘦数据源驱动程序。 ColdFusion 为它的驱动程序附带了 DataDirect。 ColdFusion 9.0.1 comes with DataDirect version 4.0 SP 1 drivers。请参阅DataDirect docs for 4.0

我对你给出的具体例子的看法。

插入查询

  • 瘦数据源失败(给出错误 ROWID 不存在)

  • Macromedia 数据源正常

也许精简数据源返回的变量与ROWID 不同。在您拨打&lt;cfquery&gt; 之后,我会拨打&lt;cfdump var="#r#"&gt; 看看您有什么可用的。

在 dbinfo 调用中

  • 瘦数据源正常

  • Macromedia 数据源从不处理,最终给出 cfoutput 超时错误

不太确定这里发生了什么,因为您期望该调用起作用。我会尝试对dbinfo 进行更通用(更高级别)的调用,看看有什么可用的。同样,使用&lt;cfdump&gt; 检查返回值。从dbnames() 开始,看看你会得到什么。然后开始挖掘返回的任何内容。这实际上只是为您提供信息,不应真正影响您的生产决定,因为您不会在那里使用dbinfo。对吧?

在带有 RC1 游标的存储过程中

  • 调用“schema.myproc”时出现精简数据源错误、参数数量或类型错误

  • Macromedia 数据源正常

瘦数据源驱动程序不支持包或存储过程中的引用游标。它says so in the ColdFusion docs

CFML 支持 Oracle 8 和 9 引用游标类型,通过引用传递参数。以这种方式传递的参数可以在一个应用程序的执行过程中从内存中分配和释放。要在包或存储过程中使用引用游标,请使用 cfprocresult 标记。这会导致 ColdFusion JDBC 数据库驱动程序将 Oracle 引用游标放入结果集中。 (您不能将此方法与 Oracle 的 ThinClient JDBC 驱动程序一起使用。

我建议使用 ColdFusion 附带的 DataDirect 驱动程序。至少在他们不提供您需要的某种功能之前。直到那时我才开始寻找其他替代方案。这将使您获得 Adob​​e 的支持。一旦您开始使用第三方软件,他们将无法支持它们。

【讨论】:

  • 1) 我已经转储了瘦源结果,所有标准,没有返回标识值 2) 同意,但奇怪的是它只适用于瘦 3) 我知道 rc1 游标不能通过瘦获得,是只是在列出差异的上下文中使用它,我会选择哪个
  • CF 附带的 oracle 的 datadirect 驱动程序由于单节点配置不支持 oracle RAC 集群,我最终使用了 macromedia jdbc
  • macromedia jdbc 驱动是datadirect吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 2021-09-27
  • 2012-10-05
  • 2020-10-21
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
相关资源
最近更新 更多