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 type
をSubmit
( <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 に関する問題ですか?