Ibm mobilefirst 在数据库中插入值

Ibm mobilefirst 在数据库中插入值,ibm-mobilefirst,worklight-adapters,Ibm Mobilefirst,Worklight Adapters,嘿,我正在使用IBM Worklight V6.2。我想将值插入数据库 我的Html代码是 <h1>Please Enter The Car Details</h1> <form > Car No:<input type="number" id="carnum" placeholder="Please enter your no" ><br><br> Details:<input type="text"

嘿,我正在使用IBM Worklight V6.2。我想将值插入数据库

我的Html代码是

 <h1>Please Enter The Car Details</h1>
 <form >    
Car No:<input type="number"  id="carnum" placeholder="Please enter your no" ><br><br>
Details:<input type="text" id= "details" placeholder="Please enter car details" > <br><br>
<input type="submit" value="Register" onclick="loadFeeds1()">

</form>
我的js文件是这样的

 function loadFeeds1(){
 var invocationData = {
           adapter:"car2",
              procedure:"getuser",
              parameters:["carno","details"]
         };


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

function loadFeedsSuccess1() {

WL.Logger.debug("inserted");


 }

function loadFeedsFailure1() {
WL.Logger.debug("failed");

}

我可以从适配器调用过程..但无法看到我在浏览器中插入值的时间。它不会在控制台中显示任何内容..请建议…

您不能简单地将
输入的
ID
作为
WL.client.invokeProcess
的参数放置。。。你需要传递它们的值

例如:

function loadFeeds1(){
    var invocationData = {
        adapter:"car2",
        procedure:"getuser",
        parameters:[$('#carnum').val(),$('#details').val()]
    };

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

这是一个端到端的场景,我从HTML中获取2个值并将它们插入数据库。要重新创建,可以使用中提供的WorklightTraining.sql方案。您可以看到它的工作原理,因为在“成功”之后,如果您刷新数据库,您将看到新记录

HTML:

<h1>Test Insert Into Database</h1>
<input type="text" id="value1" placeholder="value1"/><br/>
<input type="text" id="value2" placeholder="value2"/><br/>
<input type="button" value="Insert values to database" onclick="insertValuesToDB();"/>
function insertValuesToDB() {
    var invocationData = {
        adapter: 'insertValuesAdapter',
        procedure: 'insertValuesProcedure',
        parameters: [$('#value1').val(), $('#value2').val()]
    };

    WL.Client.invokeProcedure(invocationData, {onSuccess: insertSuccess, onFailure: insertFailure});
}

function insertSuccess() {
    alert("success");
}

function insertFailure() {
    alert("failure");
}
...
...
<connectivity>
    <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceDefinition>
            <driverClass>com.mysql.jdbc.Driver</driverClass>
            <url>jdbc:mysql://localhost:3306/worklight_training</url>
            <user>Worklight</user>
            <password>Worklight</password> 
        </dataSourceDefinition> 
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="5" />
</connectivity>

<procedure name="insertValuesProcedure"/>
...
...
var insertValuesProcedureStatement = WL.Server.createSQLStatement("INSERT INTO users(userId, firstName, lastName, password) VALUES (?,?, 'someLastName', 'somePassword')");

function insertValuesProcedure(value1,value2) {
    return WL.Server.invokeSQLStatement({
        preparedStatement : insertValuesProcedureStatement,
        parameters : [value1,value2]
    });
}
适配器XML:

<h1>Test Insert Into Database</h1>
<input type="text" id="value1" placeholder="value1"/><br/>
<input type="text" id="value2" placeholder="value2"/><br/>
<input type="button" value="Insert values to database" onclick="insertValuesToDB();"/>
function insertValuesToDB() {
    var invocationData = {
        adapter: 'insertValuesAdapter',
        procedure: 'insertValuesProcedure',
        parameters: [$('#value1').val(), $('#value2').val()]
    };

    WL.Client.invokeProcedure(invocationData, {onSuccess: insertSuccess, onFailure: insertFailure});
}

function insertSuccess() {
    alert("success");
}

function insertFailure() {
    alert("failure");
}
...
...
<connectivity>
    <connectionPolicy xsi:type="sql:SQLConnectionPolicy">
        <dataSourceDefinition>
            <driverClass>com.mysql.jdbc.Driver</driverClass>
            <url>jdbc:mysql://localhost:3306/worklight_training</url>
            <user>Worklight</user>
            <password>Worklight</password> 
        </dataSourceDefinition> 
    </connectionPolicy>
    <loadConstraints maxConcurrentConnectionsPerNode="5" />
</connectivity>

<procedure name="insertValuesProcedure"/>
...
...
var insertValuesProcedureStatement = WL.Server.createSQLStatement("INSERT INTO users(userId, firstName, lastName, password) VALUES (?,?, 'someLastName', 'somePassword')");

function insertValuesProcedure(value1,value2) {
    return WL.Server.invokeSQLStatement({
        preparedStatement : insertValuesProcedureStatement,
        parameters : [value1,value2]
    });
}

Idan我自己也尝试过这个东西,但它仍然不起作用,控制台也没有显示任何错误。我不知道您的数据库设置,但我使用了适配器示例项目中提供的worklight_训练数据库方案,它对我来说运行良好。我会相应地更新我的答案。我正在使用简单的Sql数据库和数据库车,表车和字段是卡诺和细节“简单”没有帮助;无论如何,我更新了我的答案。这100%有效。