2017-10-15 106 views
0

嗨,有人能告訴我我的代碼有什麼問題嗎?它將包插入到我的數組列表中,但不會將其插入到我的數據庫中。每次用戶按下GUI上的添加按鈕時,下面發佈的代碼都會運行謝謝!從java GUI插入到數據庫中

//Add package 
    String time = new SimpleDateFormat("DD.MM.YYYY.HH.mm.ss").format(new java.util.Date()); 
    String name = nameInputTF.getText(); 
    String address = addressInputTF.getText(); 
    String city = cityInput.getText(); 
    String county = (String) countyCombo.getSelectedItem(); 
    String contact = contactInput.getText(); 
    String description = descriptionInput.getText(); 
    double price = Double.parseDouble(priceInput.getText()); 
    boolean prepaid = true || false; 
    id++; 

    //Adding packages to the list 
    packages.add(new Package(id, time, name, address, city, county, contact, description, price, prepaid)); 

    //Method to display packages in the text field 
    displayList(); 

    //Method to set all button visibility to false 
    buttonsFalse(); 

    // Method that sets all text fields to blank 
    fieldsBlank(); 

    try { 
     String sql = "INSERT INTO packages VALUES (?,?,?,?,?,?,?,?)"; 
     statement = conn.prepareStatement(sql); 

     statement.setString(1, packIDInput.getText()); 
     statement.setString(2, arrivedInput.getText()); 
     statement.setString(3, nameInputTF.getText()); 
     statement.setString(4, addressInputTF.getText()); 
     statement.setString(5, contactInput.getText()); 
     statement.setString(6, priceInput.getText()); 
     statement.setString(7, countyCombo.getName()); 
     statement.setString(8, cityInput.getText()); 

     rs = statement.executeQuery(); 

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


}          

回答

0

也許是因爲你使用fieldsBlank()事後,當您創建查詢你嘗試從領域獲取數據,即使你只是清除了所有的領域。你可以嘗試使用該聲明開頭的變量(例如timename等)

+0

我很困惑,我在哪裏領域的空白? – Bryan

+0

就在try catch塊之前調用fieldsBlank()方法,然後在try catch塊中獲得文本字段的值(例如nameInputTF.getText()),但我如何從fieldsBlank()方法的註釋中理解文本字段將是空的 –

+0

不能相信我沒有發現!謝謝,但我拿出了方法調用,但它仍然沒有添加到DB – Bryan

0

一對夫婦的事情,我現在可以在這裏看到:

  1. executeQuery是select語句。你應該使用executeUpdate

  2. 很有可能您在將一個/所有輸入字段設置爲空白,然後嘗試將它們放入您的statement.setstring調用中。最好先將所有值讀入變量,就像你開始做的那樣,然後在你的代碼中使用這些變量。例如

    statement.setString(3, name); 
    
    statement.setString(4, address); 
    
    statement.setString(5, contact); 
    

順便說一句,我跑我的機器上的代碼進行上述更改後,並將其保存到數據庫中。

完整的源代碼如下:

public static void main(String[] args) { 
     int id = 0; 

     String time = new SimpleDateFormat("DD.MM.YYYY.HH.mm.ss").format(new java.util.Date()); 
     String name = "Tobi"; 
     String address = "Ibari"; 
     String city = "Las Vegas"; 
     String county = "county 1"; 
     String contact = "[email protected]"; 
     String description = "Whatever"; 
     double price = 5000.0; 
     boolean prepaid = true || false; 
     id++; 

     //List<Package> packageList = new ArrayList<>(); 
     // Adding packages to the list 
     //packages.add(new Package(id, time, name, address, city, county, contact, description, price, prepaid)); 

     try (Connection conn = getDBConnection()) { 
      String sql = "INSERT INTO packages VALUES (?,?,?,?,?,?,?,?)"; 
      PreparedStatement statement = conn.prepareStatement(sql); 

      statement.setString(1, String.valueOf(id)); 
      statement.setString(2, "arrived"); 
      statement.setString(3, name); 
      statement.setString(4, address); 
      statement.setString(5, contact); 
      statement.setString(6, String.valueOf(price)); 
      statement.setString(7, county); 
      statement.setString(8, city); 

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

    private static Connection getDBConnection() { 
     Connection dbConnection = null; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (ClassNotFoundException e) { 
      System.err.println(e.getMessage()); 
     } 

     try { 
      dbConnection = DriverManager.getConnection("jdbc:mysql://localhost/stackoverflow", "root", "mysql"); 
      return dbConnection; 
     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
     } 
     return dbConnection; 
    } 
+0

嗨我做了像你建議的變化,但仍然不會工作 – Bryan

+0

我甚至評論這一切,只是試圖插入名稱,仍然沒有運氣 – Bryan

+0

@Bryan,我已經添加了我使用的完整源代碼。 – Olantobi