使用移动第一工作室

时间:2015-10-12 11:22:42

标签: ibm-mobilefirst mobilefirst-adapters

请亲自帮忙。我从idan adar帖子中复制粘贴和修改了以下关于插入数据的项目。我已经有一个包含2行数据的表格,我需要在其中添加一个额外的一个。尽管一切看起来都很好我无法将数据插入表中。请大家在控制台帮助中显示没有错误,请提前感谢 的index.html

<html>
        <head>
            <meta charset="UTF-8">
            <title>demo2</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
            <!--
                <link rel="shortcut icon" href="images/favicon.png">
                <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 
            -->
            <link rel="stylesheet" href="css/main.css">
            <script>window.$ = window.jQuery = WLJQ;</script>
        </head>
        <body style="display: none;">
            <!--application UI goes here-->
            <h1>Please Enter The Student Details</h1>
 <form >    
student id:<input type="number"  id="stdid"  ><br><br>
student name<input type="text" id= "stdname"  > <br><br>
<input type="submit" value="Register" onclick="insertValuesToDB();">

</form>
            <script src="js/initOptions.js"></script>
            <script src="js/main.js"></script>
            <script src="js/messages.js"></script>
        </body>
</html>

main.js

function wlCommonInit(){    
}
function insertValuesToDB(){
     var invocationData = {
               adapter:"Insertadap",
                  procedure:"insertvaluesprocedure",
                  parameters:[$('#stdid').val(),$('#stdname').val()]
             };


     WL.client.invokeProcedure(invocationData,{
         onSuccess :loadFeedsSuccess1,
        onFailure :loadFeedsFailure1,
     });
    }

    function loadFeedsSuccess1() {

    alert("success");


     }

    function loadFeedsFailure1() {
    alert("failure");

    }

adapter.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed Materials - Property of IBM
    5725-I43 (C) Copyright IBM Corp. 2011, 2013. All Rights Reserved.
    US Government Users Restricted Rights - Use, duplication or
    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
-->
<wl:adapter name="Insertadap"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:wl="http://www.ibm.com/mfp/integration"
    xmlns:sql="http://www.ibm.com/mfp/integration/sql">

    <displayName>Insertadap</displayName>
    <description>Insertadap</description>
    <connectivity>
        <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.mysql.jdbc.Driver</driverClass>
                <url>jdbc:mysql://localhost:****/hello</url>
                <user>****</user>
                <password>***</password> 
            </dataSourceDefinition>
        </connectionPolicy>
    </connectivity>

    <!-- Replace this with appropriate procedures -->
    <procedure name="insertvaluesprocedure"/>
    <procedure name="procedure2"/>

</wl:adapter>

ADAP imp.js

var  users = WL.Server.createSQLStatement("INSERT INTO studentdb(stdid,stdname) VALUES(?,?)");
 function insertvaluesprocedure(stdid,stdname) {
return WL.Server.invokeSQLStatement({
    preparedStatement : users,
    parameters : [stdid,stdname]
 });
 }

1 个答案:

答案 0 :(得分:0)

在Chrome和Chrome中预览应用程序时DevTools已打开并且您正在使用该应用程序 - 您在Chrome DevTools控制台中看到的错误是什么?

此外,错误可能只是您在适配器XML中声明了一个过程“procedure2”,但在您的客户端代码中,您调用的是“procedure1”。

将“procedure1”更改为“procedure2”。

编辑:基于评论,它似乎是一种类型错误。

假设stdid应该对应于数据库中的int字段,这显然是个问题,因为在JavaScript中默认情况下它被视为字符串。

所以你有两个选择:

  1. 在您的数据库中,将int更改为varchar
  2. 在您的JavaScript中,执行类似var stdid = stdid * 1;的操作,然后将其更改为数字,然后数据库可能会接受该文件。