SQL IBM MobileFirst 中的适配器调用失败
SQL Adapter Invocation failure in IBM MobileFirst
我正在尝试使用 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));
}
适配器的SQL演示-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]
});
}
来自 messages.log 文件:
E FWLSE0099E: An error occurred while invoking procedure [project
DemoProject]SQLDemo/SqlStatementFWLSE0100E: parameters: [project
DemoProject] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601,
SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75. Performed
query: update AJAX set FIRSTNAME=? from AJAX where id=? FWLSE0101E:
Caused by: [project
DemoProject]com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error:
SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;..,
DRIVER=3.61.75java.lang.RuntimeException: DB2 SQL Error: SQLCODE=-104,
SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75.
...
Invalid data conversion: Parameter instance vinod is invalid for the
requested conversion. ERRORCODE=-4461, SQLSTATE=42815
下面还有更多例外。
确保在您的数据库方案中您确实需要字符串,而不是过多地限制值长度等。
我正在尝试使用 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));
}
适配器的SQL演示-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]
});
}
来自 messages.log 文件:
E FWLSE0099E: An error occurred while invoking procedure [project DemoProject]SQLDemo/SqlStatementFWLSE0100E: parameters: [project DemoProject] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75. Performed query: update AJAX set FIRSTNAME=? from AJAX where id=? FWLSE0101E: Caused by: [project DemoProject]com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75java.lang.RuntimeException: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER=3.61.75.
...
Invalid data conversion: Parameter instance vinod is invalid for the requested conversion. ERRORCODE=-4461, SQLSTATE=42815
下面还有更多例外。
确保在您的数据库方案中您确实需要字符串,而不是过多地限制值长度等。