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 データベースのテーブルのそれぞれの列にマップされた名前と説明の 2 つのフィールドがあります。

<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