MySQL:倒置逗号 - > (')和双引号 - >插入查询中的(“)错误

时间:2015-12-03 16:50:37

标签: java mysql javafx fxml netbeans-8

我正在尝试使用NetBeans-8.0.2和JavaFX(FXMLApplication)创建一个待办事项列表,该列表将内存存储到MySQL数据库中。

我知道,SQL查询采用倒置逗号 - > (')和 双引号 - > (“)同样理解字符串。

现在,我正在尝试的是,(今天是我姐姐的生日)我正在尝试在我的列表中添加一个任务:这是Rahi的生日!

但是,由于sql查询,它失败了。

这是因为在代码中,输入的反转逗号会使sql查询整体变得复杂。

 @FXML
private void handleAddTaskAction(ActionEvent event) {
    String date = addTaskDatePicker.getValue().toString();
    System.out.println(date);
    String hour = hourComboBox.getValue() + "";
    String minute = minuteComboBox.getValue() + "";

    String where = whereField.getText();

    String header = headerField.getText();
    String description = descriptionArea.getText();

    if(hour.length()==0)
        hour= "12 AM";
    if(minute.length()==0)
        minute= "00";
    if(header.length()==0)
        header= "(No header available)";
    if(description.length()==0)
        description= "(No description available)";
    if(header.length()==0 && description.length()==0){
        header= "(Empty task)";
        description= "(Empty description)";
    }

    String query = "insert into task values('" + date + "','" + hour + " " + minute + " minutes', '"
            + header + "', '" + description + "', 'at " + where + "');";

    if (date.length() >= 1) {
        try {
            statement.execute(query);
        } catch (SQLException ex) {
            //Logger.getLogger(FXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);

            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setHeaderText("Error occured!");
            alert.showAndWait();
        }
    } else {
        Alert alert = new Alert(Alert.AlertType.WARNING);
        alert.setHeaderText("You must select a date.");
        alert.showAndWait();
    }

}

我想在输入时存储消息。任何解决方案?

我的数据库表描述和GUI作为图片附加。 问我是否还需要其他东西。 谢谢。

图片:GUI和 图片:Table description

1 个答案:

答案 0 :(得分:0)

只需使用PreparedStatement注入您的值,它就会为您逃脱。