在混合应用中调用 SQL 适配器

call SQL Adapter in hybrid app

我正在尝试从 DB2 获取数据。调用 SQL 适配器后,我在 LogCat 中收到以下错误:

Procedure invocation error. Class Cast: org.mozilla.javascript.NativeJavaObject incompatible with org.mozilla.javascript.Function

适配器XML

<dataSourceDefinition>
    <driverClass>com.ibm.as400.access.AS400JDBCDriver</driverClass>
    <url>jdbc:as400://host/HRCORE</url>
    <user>HRCORE</user>
    <password>HRCORE</password> 
</dataSourceDefinition>

在 LogCat 中出现这个错误后,我从 loadFailure 函数中得到了注释

var invocationData = {
    adapter : "SQLAdapter",
    procedure : "getTypeFromSubjectTabele",
    parameters : []
};

WL.Client.invokeProcedure(invocationData, {
    onSuccess:this.loadSucess,
    onFailure:this.loadFailure,     
});

适配器实现

var getTypeFromSubjectTabele = WL.Server.createSQLStatement("SELECT type FROM subject");

function getTypeFromSubjectTabele(){
    WL.Logger.warn("INSIDE ADAPTER getTypeFromSubjectTabele");
    return WL.Server.invokeSQLStatement({
        preparedStatement: getTypeFromSubjectTabele,
        parameters : []
    });
}

认为问题是您对变量和函数使用了相同的名称(请参阅“Function Declaration Overrides Variable Declaration When Hoisted”部分)。给每个人一个唯一的名字,看看这是否解决了这个特定问题。