3

我正在尝试使用 IBM mobilefirst 平台中的 SQL 适配器将数据插入数据库,但是我的代码达到了失败功能......

主.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));
}

Adapter的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] 
  });
}
4

1 回答 1

0

从 messages.log 文件中:

E FWLSE0099E: 调用过程 [project DemoProject]SQLDemo/SqlStatementFWLSE0100E: 参数: [project DemoProject] DB2 SQL 错误: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX set FIRSTNAME=?;.., DRIVER =3.61.75。执行查询:更新 AJAX 设置 FIRSTNAME=? 从 AJAX 哪里 id=? FWLSE0101E: 原因:[project DemoProject]com.ibm.db2.jcc.am.SqlSyntaxErrorException:DB2 SQL 错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=from;AJAX set FIRSTNAME=?;..,DRIVER=3.61 .75java.lang.RuntimeException: DB2 SQL 错误: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=from;AJAX 设置 FIRSTNAME=?;.., DRIVER=3.61.75。

...

无效的数据转换:参数实例 vinod 对于请求的转换无效。错误代码=-4461,SQLSTATE=42815

下面还有更多的例外。

确保在您的数据库方案中您实际上期望字符串,而不是过多地限制值长度等。

于 2015-04-22T18:27:10.860 回答