IBM MobileFirst 中的 SQL 适配器调用失败
Posted
技术标签:
【中文标题】IBM MobileFirst 中的 SQL 适配器调用失败【英文标题】:SQL Adapter Invocation failure in IBM MobileFirst 【发布时间】:2015-04-22 14:21:51 【问题描述】:我正在尝试使用 IBM mobilefirst 平台中的 SQL 适配器将数据插入数据库,但是我的代码到达了失败函数...
main.js:
function insertData()
alert("Function InsertData called");
var fname = document.forms["form1"]["fname"].value.toString();
var lname = document.forms["form1"]["lname"].value.toString();
var email = document.forms["form1"]["email"].value.toString();
var pwd = document.forms["form1"]["pwd"].value.toString();
// alert("fname"+fname);
var invocationData =
adapter: 'SQLDemo',
procedure: 'procedure4',
parameters:[fname,lname,email,pwd]
;
var options =
onSuccess : InsertDataSuccess,
onFailure : InsertDataFailed,
timeout : 30000
;
WL.Client.invokeProcedure(invocationData, options);
function InsertDataSuccess(result)
alert("Success");
WL.Logger.debug("Retrieve success" + JSON.stringify(result));
function InsertDataFailed(result)
alert("Failure");
WL.Logger.debug("Retrieve success" + JSON.stringify(result));
适配器的SQLDemo-impl.js:
var procedure4Statement = WL.Server.createSQLStatement("INSERT INTO INNOVATION (FIRSTNAME,LASTNAME,EMAIL,PASSWORD) VALUES(?,?,?,?)");
function procedure4(fname,lname,email,password)
return WL.Server.invokeSQLStatement(
preparedStatement : procedure4Statement,
parameters : [fname,lname,email,password]
);
【问题讨论】:
您在 InsertDataFailed... 中遇到的错误是什么?结果是什么”?另外,添加“procedure4”的实现。 它将执行 onFailure 函数 var procedure4Statement = WL.Server.createSQLStatement("INSERT INTO INNOVATION (FIRSTNAME,LASTNAME,EMAIL,PASSWORD) VALUES(?,?,?,?)"); //var procedure3Statement = WL.Server.createSQLStatement("select * from INNOVATION where FIRSTNAME=? and id=?"); function procedure4(fname,lname,email,password) return WL.Server.invokeSQLStatement(preparedStatement : procedure4Statement, parameters : [fname,lname,email,password] ); 1) 显然请用代码编辑问题 - 而不是在 cmets 中。 2)我在问它在“结果”中打印什么。 还要在 InsertDataFailed() 中将“result”更改为“result.errorMsg”。 Result.errorMsg 返回 null,如果我在表单中给出空值,则返回成功消息 【参考方案1】:来自 messages.log 文件:
E FWLSE0099E: 调用过程 [project DemoProject]SQLDemo/SqlStatementFWLSE0100E:参数:[项目 DemoProject] DB2 SQL 错误:SQLCODE=-104,SQLSTATE=42601, SQLERRMC=from;AJAX 设置 FIRSTNAME=?;.., DRIVER=3.61.75。执行 查询:更新 AJAX 设置 FIRSTNAME=?从 AJAX 哪里 id=? FWLSE0101E: 原因:[项目 DemoProject]com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL 错误: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX 设置 FIRSTNAME=?;.., 驱动程序=3.61.75java.lang.RuntimeException:DB2 SQL 错误:SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75.
...
无效的数据转换:参数实例 vinod 对 请求的转换。 ERRORCODE=-4461,SQLSTATE=42815
下面还有更多的例外。
确保在您的数据库方案中您确实期望字符串,而不是过多地限制值长度等。
【讨论】:
Idan Adar 我的适配器正在工作,每当我单独调用我的适配器时,浏览器中的结果就像 "isSuccessful": true, "updateStatementResult": "updateCount": 1 表示没有问题数据库 是的,您的适配器工作正常,您的数据库配置错误。阅读错误。谷歌错误。 Idan Adar 我已成功将数据插入数据库,问题是,我的控制器 GOTO 功能失败,但数据已插入。 问题是适配器返回空值,但是插入了数据。以上是关于IBM MobileFirst 中的 SQL 适配器调用失败的主要内容,如果未能解决你的问题,请参考以下文章
IBM MobileFirst - 连接数据库 Java 适配器的问题
IBM MobileFirst 8.0 适配器中的 RESTful 方法