0

我正在尝试将数据从我的 XPage 保存到 MySQL 数据库。我已经建立了一个连接并且它可以工作(这可以通过我的动态视图面板能够获取 MySQL 表中的数据这一事实来证明)。但我无法将我的数据提交给 MySQL。我正在关注XPagesJDBC.nsf扩展库中的示例数据库。

MySQL连接文件mysqlconn.jdbc

<jdbc>
    <driver>com.mysql.jdbc.Driver</driver>
    <url>jdbc:mysql://***.***.***.***:3306/project_management</url>
    <user>adminuser</user>
    <password>******</password>
</jdbc>

在我的 XPage 中,我创建了一个数据源xe:jdbcRowSet

<xp:this.data>
    <xe:jdbcRowSet var="jdbcrsProjectMgmt" connectionName="mysqlconn"
        sqlTable="project_details">
    </xe:jdbcRowSet>
</xp:this.data>

然后在我的xp:panel我使用数据源来保存对象。我有两个名称和描述字段映射到 MySQL 数据库表中的相应列。

<xp:panel>
    <xp:this.data>
        <xe:objectData var="row"
            saveObject="#{javascript:jdbcrsProjectMgmt.saveRow(row);}">
            <xe:this.createObject><![CDATA[#{javascript:var id = context.getUrlParameter("id");
if (id != null && !id.trim().equals("")) {
    jdbcrsProjectMgmt.getRow(parseInt(id) - 1);
} else {
    jdbcrsProjectMgmt.newRow(0);
}}]]></xe:this.createObject>
        </xe:objectData>
    </xp:this.data>
    <xp:table border="0" cellpadding="5" cellspacing="0">
        <xp:tr>
            <xp:td>Name</xp:td>
            <xp:td>
                <xp:inputText id="txtName" value="#{row.name}"></xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>Description</xp:td>
            <xp:td>
                <xp:inputText id="txtDescription"
                    value="#{row.description}">
                </xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td colspan="2" align="center">
                <xp:button value="Save" id="btnSave">
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="complete" immediate="false" save="false">
                        <xp:this.action>
                            <xp:actionGroup>
                                <xp:saveDocument var="row"></xp:saveDocument>
                                <xp:openPage
                                    name="/viewProject.xsp">
                                </xp:openPage>
                            </xp:actionGroup>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
            </xp:td>
        </xp:tr>
    </xp:table>
</xp:panel>

当我尝试单击保存按钮时,数据未保存且未显示错误。但是,如果我将其更改Button typeSubmit( <xp:eventHandler ..... save="true">),则会出现错误:

Error saving data source jdbcrsProjectMgmt
javax.sql.rowset.spi.SyncProviderException: Can't call commit when autocommit=true
Can't call commit when autocommit=true

但这一次奇怪的是数据被保存了。我找不到这个autocommit属性,也不知道在哪里设置它。我该如何解决这个问题?这是 XPages 还是 MySQL 的问题?

4

0 回答 0