我正在编写一个JavaFX应用程序,我在其中将JavaFX TableView连接到我的Sqlite数据库,这里我尝试做的是,如果文本字段为空,那么它会要求用户填写所有数据。然而,因为在我的Sqlite数据库中,我有两组数据集为整型,一组为双精度型,所以我无法为这三组数据调用isEmpty to。然而,我不能将它们转换为String,因为我需要在后面进行计算。另一个方面是代码的最后一部分,当用户希望填充数据以添加一组新数据时,他可以清除他在这些文本字段中写入的任何内容,但是,我不确定整数和双精度的代码是什么,而不是“expeditionDate.setText(null);“。先谢谢你了。
String query = null;
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement;
Expedition user = null;
private boolean update;
int studentId;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}
@FXML
private void save(MouseEvent event) {
connection = DbConnect.connect();
String Date = expeditionDate.getText();
double Time = Double.valueOf(expeditionTime.getText());
int Altitude = Integer.parseInt(expeditionAltitude.getText());
int Distance = Integer.parseInt(expeditionDistance.getText());
String Notes = expeditionNotes.getText();
if (Date.isEmpty() || Time.isEmpty() || Altitude.isEmpty() || Distance.isEmpty()|| Notes.isEmpty()) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setHeaderText(null);
alert.setContentText("Please Fill All DATA");
alert.showAndWait();
} else {
getQuery();
insert();
clean();
}
}
@FXML
private void clean() {
expeditionDate.setText(null);
expeditionTime.setText(null);
expeditionAltitude.setValue(null);
expeditionDistance.setValue(null);
expeditionNotes.setText(null);
}
3条答案
按热度按时间js5cn81o1#
进行测试以确保所需数据在您尝试处理数据并保存或更改数据库之前已就位:
dced5bon2#
如果getText()为空,则Double.valueOf将抛出异常,但要执行其他检查和更好的空处理-
变更
双精度时间=双精度.值Of(远征时间.获取文本());
到
双精度时间=双精度.值Of(远征时间.getText());
与整数相同-将整数高度更改为整数高度
plupiseo3#
恕我直言,如果你不确定是否设置正确,就不应该尝试将一个文本解析成一个数值。你的问题是你无法检查值是否为空,因为原语类型没有内置的
isEmpty
方法。我将使用上面的方法来检查
expeditionTime.getText()
是否为null或空,如果是,则使用默认值ie.0.0
或您想要的任何默认值。