繁体   English   中英

从Java GUI插入数据库

[英]Inserting into a database from a java GUI

嗨,有人可以告诉我我的代码有什么问题。 它将包插入到我的arrayList中,但不会将其插入到我的数据库中。 每当用户按下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等)。

我现在可以在这里注意到以下几点:

  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 = "asdaf@gmail.com";
        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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM