[英]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()
,然后在创建查询时尝试从字段中获取数据,即使您刚刚清除了所有字段。 您可以尝试使用开始时声明的变量(例如time
, name
等)。
我现在可以在这里注意到以下几点:
executeQuery
用于select语句。 您应该使用executeUpdate
。
在尝试将它们输入到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.