0

我想将我的 IBM MobileFirst 应用程序连接到我的数据库,

我使用 wampserver (localhost),用户名 =“root”,密码 =“...”,数据库名称 =“mydatabase”。

在我的 MobileFirst 项目中,我创建了一个 SQL 适配器“myAdapter”。
在 myAdapter.xml 中,代码如下:

<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:3306/mydatabase</url>
            <user>root</user>
            <password></password> 
        </dataSourceDefinition>
    </connectionPolicy>
</connectivity>
<!-- Replace this with appropriate procedures -->
<procedure name="insertMyTable1"/>

下面是 myAdapter-impl.js 文件

        var insertMyTable = WL.Server.createSQLStatement( 
"IESERT INTO mytable" +
"VALUES (? , ? , ?);");

function insertMyTable1(id, name, age){
return WL.Server.invokeSQLStatement({
    preparedStatement : insertMyTable,
    parameters : [id, name, age]
});

}

//--------------------------------------

在我的一个页面中,我有一个 addData.html 文件,下面是代码:

<html>
<script>
function insertData(){
    var id = document.getElementById("id").value;
    var name = document.getElementById("name").value;
    var age = parseInt(document.getElementById("age").value);
    WL.Client.invokeProcedure({
        adapter : "myAdapter",
        procedure : "insertMyTable1",
        parameters : [ id, name, age ]
    });
}
</script>
<body>
<form action="javascript:insertData();">
<table align="center">
<tr>
<td>Id : </td>
<td><input type="text" id="id"></td>
</tr>
<tr>
<td>Name : </td>
<td><input type="text" id="name"></td>
</tr>
<tr>
<td>Age : </td>
<td><input type="text" id="age"></td>
</tr>
<tr>
<td colspan="2" align="center">
    <button type="submit" style="width:100px;">Add</button>
</td>
</tr>
</table>
</form>
</body>
</html>

但是我无法将数据插入到 mydatabase->mytable 中,有人知道为什么吗??

错误日志(在我的 addData.html 中) Uncaught ReferenceError: WL is not defined

4

1 回答 1

1

这个问题与您的 SQL 适配器完全无关。

这里的问题是您曾经a href导航到另一个 HTML 文件。通过这样做,您已经退出了 MFP 框架的范围或上下文,这就是您无法使用 MFP API 方法(例如WL.Client.invokeProcedure.

MFP 混合应用程序是单页应用程序。在应用程序的 index.html 中有对 MFP JavaScript 框架的引用,以便加载它……没有这些,事情就会崩溃。

为了在您的应用程序中使用多个“页面”,请参阅以下教程:

您绝不能真正离开框架的上下文,因此a href不允许进行诸如此类的操作。

如果您想将您的“页面”分隔为单独的 HTML 文件,您可以使用 jQuery Mobile 查看此示例项目。其他 UI 框架(例如 Dojo)也提供了它们自己的多页支持实现,您可以在 MFP 应用程序中使用这些实现。

相关问题:https ://stackoverflow.com/search?q=%5Bworklight%5D+multipage+is%3Aquestion

于 2015-05-07T08:34:20.290 回答