从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()
事后,当您创建查询你尝试从领域获取数据,即使你只是清除了所有的领域。你可以尝试使用该声明开头的变量(例如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 = "[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;
}
我很困惑,我在哪里领域的空白? – Bryan
就在try catch块之前调用fieldsBlank()方法,然后在try catch块中获得文本字段的值(例如nameInputTF.getText()),但我如何从fieldsBlank()方法的注释中理解文本字段将是空的 –
不能相信我没有发现!谢谢,但我拿出了方法调用,但它仍然没有添加到DB – Bryan