2016-04-26 77 views
1

我在將數據插入到使用java創建的postgres表中時遇到問題。代碼的創建表部分工作正常,只有當我將值插入到表中時纔會發生任何事情。我用來填充表tt的代碼是:將java GUI中的值插入到postgresql數據庫中

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     String txt1 = jTextField1.getText(); 
     int number = Integer.parseInt(txt1); 
     String name= jTextField2.getText(); 
     String txt3 = jTextField3.getText(); 
     int mean = Integer.parseInt(txt3); 
     Connection c = null; 
     Statement stmt = null; 
     try { 
     Class.forName("org.postgresql.Driver"); 
     c = DriverManager.getConnection("jdbc:postgresql://localhost:5432/tst", "postgres", "21262050"); 
     c.setAutoCommit(false); 
     System.out.println("Opened database successfully"); 
     String sql = "INSERT INTO tt(noun, max, nbr) VALUES(?, ?, ?)"; 
     PreparedStatement pst = c.prepareStatement(sql); 
     pst.setString(1, name); 
     pst.setInt(2,mean); 
     pst.setInt(3, number); 

     pst.executeUpdate(); 

     } catch (SQLException ex) { 
      Logger.getLogger(insrt.class.getName()).log(Level.SEVERE, null, ex); 
     } 


     catch(Exception e){ 
      e.printStackTrace(); 
     } 

    }           

    public static void main(String args[]) { 

     java.awt.EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       new insrt().setVisible(true); 
      } 
     }); 
    } 

回答

3

您正在建立autocommit爲false。

自動提交模式被禁用後,沒有SQL語句是 提交,直到您顯式調用方法提交。

https://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#disable_auto_commit

嘗試後pst.executeUpdate();

+0

執行c.commit()我會問,爲什麼有必要關閉自動提交了這個例子嗎? – saml

+0

它的工作原理,我太棒了! –

+0

@TheShady沒問題。如果您願意,請將答案標記爲已接受。 – RubioRic