gpt4 book ai didi

java - 我的executeUpdate() 工作,但未提交

转载 作者:太空宇宙 更新时间:2023-11-04 13:33:21 25 4
gpt4 key购买 nike

我试图在我的 postgresql 数据库中插入数据,但是,当我执行executeUpdate()方法时,它不会在我的数据库中插入任何数据,而且我看不到我做错的地方......

Ps:我的数据库是autocommit: on;

我在这里使用 Jboss 7.1.1 我的数据源配置:

<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jta="true" jndi-name="java:jboss/datasources/PostgresqlDS" pool-name="PostgreDS" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:postgresql://dataBaseAddress/dataBaseName</connection-url>
<driver>org.postgresql</driver>
<pool>
<min-pool-size>2</min-pool-size>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>user</user-name>
<password>password</password>
</security>
</datasource>
<drivers>
<driver name="org.postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>

这是我的连接类:

public Connection getConnection() throws TopLevelException, SQLException {
Connection conn = null;
try {
Context ctx = new InitialContext();
TransactionBean tal = (TransactionBean) ctx.lookup("java:global/snrng-ear/snrng-ejb-lgc/TransactionBean!br.com.compplied.snrng.ejb.TransactionBean");
conn = tal.getConnection();
} catch (NamingException e) {
throw new TopLevelException(e);
}
return conn;
}

这是执行我的插入的方法

public int inserirHistorico(RetornoHistoricoObject retorno) throws TopLevelException {
int update = 0;
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
String sql = "INSERT INTO table ( column1, column2, column3, column4, column5, column6) values (?, ?, ?, ?, ?, localtimestamp)";
try {
con = getConnection();
ps = con.prepareStatement(sql);
rs = ps.getResultSet();
ps.setString(1, retorno.getNome_arquivo());
ps.setString(2, retorno.getNumero_autenticacao().trim());
ps.setString(3, retorno.getNosso_numero());
ps.setDate(4, retorno.getData_pagamento());
ps.setDouble(5, retorno.getValor());
update = ps.executeUpdate();

} catch (SQLException e) {
throw new TopLevelException(e);
} catch (Exception e) {
throw new TopLevelException(e);
} finally {
try {
close(rs, ps, con);
} catch (SQLException e) {
throw new TopLevelException(e);
}
}
return update;
}

当我执行 ps.executeUpdate() 方法时,会向我返回一条成功消息,其中插入了新的 id,但是,当我在表中查找此 id 时,那里没有插入任何内容。我已经检查了我的数据库参数、连接等,但它仍然无法正常工作...任何人都可以帮助我吗?

最佳答案

为了隔离问题,请尝试:

  1. 在数据库中执行手动插入以检查自动提交设置?如果工作 - Java 中的问题。如果不起作用 - 数据库出现问题

  2. 创建一个简单的类来执行插入并检查它是否有效。可以用,应用程序设置有问题。如果不起作用 - FU## Java/驱动程序!

  3. 如果 1 和 2 有效,请尝试使用事务:

    Transaction t =  beginTransaction(); // session???
    //your code here
    tx.commit;

关于java - 我的executeUpdate() 工作,但未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com