【发布时间】:2014-07-22 06:12:24
【问题描述】:
我正在尝试使用 worklight 6.1.0 连接到本地 LAN 中的 DB2,并触发 Select Query 以查找数据(如果存在)。但我得到以下错误:
{
"errors": [
"Runtime: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DATABASE_NAME.REGISTRATION, DRIVER=3.58.82.\nPerformed query:\nSELECT * FROM DATABASE_NAME.registration where DATABASE_NAME.registration.Mob_No = ?"
],
"info": [
],
"isSuccessful": false,
"warnings": [
]
}
我的 SQL 适配器配置如下所示:
<connectionPolicy xsi:type="sql:SQLConnectionPolicy">
<!-- Example for using a JNDI data source, replace with actual data source name -->
<!-- <dataSourceJNDIName>java:/data-source-jndi-name</dataSourceJNDIName> -->
<!-- Example for using MySQL connector, do not forget to put the MySQL connector library in the project's lib folder -->
<dataSourceDefinition>
<driverClass>com.ibm.db2.jcc.DB2Driver</driverClass>
<url>jdbc:db2://172.21.11.129:50000/MOBILEDB</url>
<user>db2admin</user>
<password>Newuser123</password>
</dataSourceDefinition>
</connectionPolicy>
其中有程序的js文件如下:
var selectStatement1 = "SELECT * FROM DATABASE_NAME.registration where DATABASE_NAME.registration.Mob_No = ?";
var procStmt1 = WL.Server.createSQLStatement(selectStatement1);
function registrationLookup(mobile){
WL.Logger.debug("Inside registrationLookup");
return WL.Server.invokeSQLStatement(
{
preparedStatement : procStmt1,
parameters : [mobile]
}
);
}
我做了一些关于将 DB2 与 Worklight 连接的研究,发现我需要将以下数据放入 worklight.properties 文件中。
wl.db.username=db2admin
wl.db.type=DB2
wl.db.password=Newuser123
wl.db.driver=com.ibm.db2.jcc.DB2Driver
但添加后,我无法部署适配器,并且错误提示“db2admin”不存在。所以我在当前问题的背景下跳过了这一步。但是在经历了我没有添加这个 worklight.properties 数据的错误之后,在我看来,根据 http://www-01.ibm.com/support/docview.wss?uid=swg21613531 或用户表不存在“对象不存在”。任何建议都会有所帮助。 注意:
- 我的 IP 地址是 172.21.11.125,我从那里调用 Adapter for DB2。
- DB2 实例正在 172.21.11.129 @ 50000 上运行。
- 已经在 server/lib 中添加了 db2jcc_license_cu_9.5.jar 和 db2jcc_9.5.jar。它的名称附加了“_9.5”,我已经从两个 jar 中删除了它,只保留了 db2jcc_license_cu.jar 和 db2jcc.jar。
【问题讨论】:
-
DATABASE_NAME真的是您的数据库/模式的名称吗?这似乎不是一个非常清晰/有用的名称。 db 抱怨registration表不存在(或者无论如何都找不到它),所以它可能不是用户表问题。我对 Worklight 的了解不够多——js 是分发给客户端的吗?如果您让客户端运行任意 SQL 语句,这样做似乎会导致灾难。否则这是一个明确提出的问题 - 我希望更多的人会提供遇到的错误的全文,更不用说他们尝试的步骤...... -
我想,我的问题确实有点错误,让我澄清一下 Database_Name=MOBILEDB, SCHEMA_NAME=LARSEN(Dummy Name), Table_NAME=registration。在 Woklight Adapter.xml 中,其对应的 js 文件驻留在服务器上,客户端通过过程(回调函数)调用这些适配器。 Eclipse(Worklight) 提供了直接使用参数调用此方法的功能,结果显示在 html 文件中,因此可以最小化测试适配器的整个大故事。
标签: db2 ibm-mobilefirst worklight-adapters db2-connect