2010-10-21 45 views
3

我試圖插入新的記錄,使用jdbc。一切看起來都沒問題,我沒有任何異常,但是新記錄沒有插入到表格中。 Select語句正確。JDBC插入語句不起作用

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(); 
    } 
} 

什麼可能是錯的?

+1

如果你把你的SQL並嘗試直接在數據庫中運行,會發生什麼? – hvgotcodes 2010-10-21 18:53:42

+0

你確定沒有例外嗎? – 2010-10-21 18:53:54

+0

Sql語句直接在db中添加新記錄。沒關係。它不適用於jdbc。 – sunny 2010-10-21 18:55:17

回答

1

我會嘗試禁用自動提交和手動做交易,看看是否有幫助。

5

我有過類似的情況我的數據庫查詢軟件沒有看到從我的Java程序進行插入/更新,因爲沒有提交,因此是不可見的其他連接。

嘗試做一個明確的承諾執行語句之後:

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

如果這樣的作品可能要調整你的自動提交設置,或者只是留在明確的承諾。

+0

它沒有幫助。也許postgresql 9有一些問題,我會嘗試使用舊版本。 – sunny 2010-10-22 19:27:01