JDBC插入语句不起作用

时间:2010-10-21 18:50:01

标签: java jdbc insert

我正在尝试使用jdbc插入新记录。一切看起来都不错,我没有任何异常,但新记录没有插入表中。 Select语句正常工作。

  public Connection getConnection(){
    Connection conn=null;
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try {
        conn = DriverManager.getConnection(url);
        conn.setAutoCommit(true);

    } catch (SQLException e) {
        e.printStackTrace();  
    }
    return conn;
}

public void insertDish(String name, float mass, float price, String description,int pizzeria_id) {
        String insertStr = "insert into \"Dish\"(name,mass,price,description,pizzeria_id) values("+"'"+name+"'"+", "+mass+", "+price+", "+"'"+description+"'"+", "+pizzeria_id+")";

      Connection conn = getConnection();

    try {
        Statement sql = conn.createStatement();
        sql.executeUpdate(insertStr);
        sql.close();
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();  
    }
}

有什么不对?

2 个答案:

答案 0 :(得分:8)

我遇到过类似的情况,我的数据库查询软件没有看到我的Java程序完成的插入/更新,因为它们没有提交,因此对其他连接不可见。

在执行语句后立即尝试执行显式提交:

sql.executeUpdate(insertStr);
conn.commit(); // ADDED
sql.close();

如果可行,您可能需要调整AutoCommit设置,或者只使用显式提交。

答案 1 :(得分:1)

我会尝试禁用自动提交并手动执行交易,看看是否有帮助。