从java GUI插入到数据库中

从java GUI插入到数据库中

问题描述:

嗨,有人能告诉我我的代码有什么问题吗?它将包插入到我的数组列表中,但不会将其插入到我的数据库中。每次用户按下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); 
    } 


}          

也许是因为你使用fieldsBlank()事后,当您创建查询你尝试从领域获取数据,即使你只是清除了所有的领域。你可以尝试使用该声明开头的变量(例如timename等)

+0

我很困惑,我在哪里领域的空白? – Bryan

+0

就在try catch块之前调用fieldsBlank()方法,然后在try catch块中获得文本字段的值(例如nameInputTF.getText()),但我如何从fieldsBlank()方法的注释中理解文本字段将是空的 –

+0

不能相信我没有发现!谢谢,但我拿出了方法调用,但它仍然没有添加到DB – Bryan

一对夫妇的事情,我现在可以在这里看到:

  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/*", "root", "mysql"); 
      return dbConnection; 
     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
     } 
     return dbConnection; 
    } 
+0

嗨我做了像你建议的变化,但仍然不会工作 – Bryan

+0

我甚至评论这一切,只是试图插入名称,仍然没有运气 – Bryan

+0

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