【问题标题】:Insertion of values in database在数据库中插入值
【发布时间】:2014-08-06 15:02:27
【问题描述】:

嘿,我正在使用 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>

我的程序是:

var  users = WL.Server.createSQLStatement("insert into car(carno,details) values (?,?)");
 function getusers(carno,details) {
return WL.Server.invokeSQLStatement({
    preparedStatement : users,
    parameters : [carno,details]
 });
 }

我的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");

}

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

【问题讨论】:

    标签: ibm-mobilefirst worklight-adapters


    【解决方案1】:

    您不能简单地将inputs 的IDs 作为WL.client.invokeProcedure 的参数...您需要传递它们的值。

    例如:

    function loadFeeds1(){
        var invocationData = {
            adapter:"car2",
            procedure:"getuser",
            parameters:[$('#carnum').val(),$('#details').val()]
        };
    
        WL.Server.invokeProcedure(invocationData,{
            onSuccess :loadFeedsSuccess1,
            onFailure :loadFeedsFailure1,
        });
    }
    

    这是一个端到端的场景,我从 HTML 中获取 2 个值并将它们插入到数据库中。要重新创建,您可以使用Adapters sample project 中提供的 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();"/>
    

    ma​​in.js:

    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");
    }
    

    适配器 XML:

    ...
    ...
    <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 我自己也试过这个东西,但它仍然无法正常工作,控制台也没有显示任何错误
    • 我不知道您的数据库设置,但我使用了 Adapters 示例项目中提供的 worklight_training 数据库方案,它对我来说工作正常。我会相应地更新我的答案。
    • 我正在使用简单的 Sql 数据库和数据库 car,table car 和 field 是 carno 和 details
    • "simple" 没有帮助;无论如何,我更新了我的答案。这 100% 有效。
    猜你喜欢
    • 2012-09-09
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 2023-03-08
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多