代码之家  ›  专栏  ›  技术社区  ›  DaJackal

下一个Java/SQL代码序列中有什么问题?

  •  4
  • DaJackal  · 技术社区  · 14 年前

    我通过Java代码对access中的一个表进行了更新,但它不起作用。但是,当我将executeUpdate()的结果打印到控制台时,它显示1,但在数据库中,没有更改。你能告诉我哪里出了问题吗?

    System.out.println("here");
    PreparedStatement st = conn.prepareStatement(
        "UPDATE StocProduseCuFactura SET cantitate = " +
        "cantitate - ? WHERE nume = ? and um = 'buc'");
    st.setInt(1, cant);
    st.setString(2, p.getNume());
    System.out.println(st.executeUpdate());
    st.close();
    

    我忘了说,如果我在access中运行SQL代码,它就工作了。

    4 回复  |  直到 14 年前
        1
  •  0
  •   JJ Keys    14 年前

        2
  •  1
  •   DaJackal    14 年前

    各位,很抱歉打扰你们,但我意识到这是我愚蠢的错误。在这一系列代码之后还有另一个方法,它使表与更新之前一样正确,这就是为什么我没有看到任何更改。

        3
  •  0
  •   bragboy    14 年前

    正如其他人所说,事务是您可能需要关注的领域。尝试显式地将autoCommit设置为true和false,然后尝试更新查询。

    conn.setAutoCommit(true);
    

    此外,检查数据库上的锁。其他一些连接可能已经获取了一个锁并等待它被提交,但是在这种情况下,您的更新查询将不会被触发。但是试着重新启动数据库。

        4
  •  0
  •   user434722    14 年前

    约翰尼·凯斯可能是对的。很可能您的连接没有设置为自动提交事务,因此当您关闭它时,事务将回滚,更改将被删除。

    你可以试试

    conn.setAutocommit(true);