mysql - Java FXML - NetBeans - 从表中删除 - MySQL

标签 mysql javafx netbeans

当我尝试从 TableView 中删除行时,出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[value: 3]' at line 1

我想要的:一旦选择了 TableView 中的一行,我想将其从数据库中删除。

@FXML
void delete(ActionEvent event) {
    try {

        int pos;
        pos = (int) tabelCustomers.getSelectionModel().getSelectedIndex();
        Customers c;
        c = tabelCustomers.getItems().get(pos);
        SimpleIntegerProperty idc = c.idc;
        String query;
        query = "DELETE FROM customers WHERE customers.idc = " + idc;

        try (Statement stm = cnx.createStatement()) {
            stm.executeUpdate(query);
        }
    } catch (SQLException ex) {

        Logger.getLogger(CustomersTableController.class.getName()).log(Level.SEVERE,
                null, ex);
    }
}

我错过了什么?我尝试了很多可能的解决方案,但没有任何效果。 基本上,当用户单击表中的行,然后单击“删除”按钮时,应从表和数据库中删除该行。

提前致谢。

最佳答案

SimpleIntegerProperty idc = c.idc;
String query = "DELETE FROM customers WHERE customers.idc = " + idc;

当在字符串连接中使用对象(不是字符串)时,它会通过调用自动转换为字符串 >toString() 就可以了。 SimpleIntegerProperty 的字符串表示形式不仅仅是它的值,这意味着您的查询最终看起来像这样:

DELETE FROM customers WHERE customers.idc = IntegerProperty [bean: <some_instance>, name: idc, value: 42]

这显然不是有效的 SQL。您需要提取属性的值并将其用作查询的一部分。但是,在创建 SQL 查询时,首先不应使用字符串连接。您应该使用 PreparedStatement带参数。例如:

String query = "DELETE FROM customers WHERE customers.idc = ?";
try (PreparedStatement ps = cnx.prepareStatement(query)) {
  ps.setInt(1, idc.get());
  ps.executeUpdate();
}

关于mysql - Java FXML - NetBeans - 从表中删除 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681767/

相关文章:

php - 如果单元格为空插入语法

mysql - 如何从下到上组织 MySQL 中的表?

java - 当我进行分析时内存的奇怪行为

php - MySQL 正则表达式忽略空格

mysql - 2 个非常相似的 mysql 查询,仅在 OR v/s IN 子句中不同,给出了不同的结果

Java c3p0 池在待机 5-10 分钟后断开连接

带有突出显示文本的 JavaFX TableView

java - JavaFX 子类的内联样式

java - Netbeans "Import Classes"错误消息

java - Mac OS X 上的 Netbeans : Where are Apache Tomcat Old Logs?