【问题标题】:I can't delete from my SQL database using JTable我无法使用 JTable 从我的 SQL 数据库中删除
【发布时间】:2013-05-16 01:02:55
【问题描述】:

所以...我想使用 JTable 从数据库中删除一行,但我不知道为什么它没有被删除,也许 DELETE 指令的 sintaxis 是错误的...

borrar.addActionListener(new ActionListener() 
    {
        public void actionPerformed(final ActionEvent e)
        {

             System.out.println(tabla_proveedor.getSelectedRow());

            if (tabla_proveedor.getSelectedRow()!=-1){

                id_borrado=datos_proveedor[tabla_proveedor.getSelectedRow()][0];
                System.out.println(id_borrado);

            try{
            Statement st = conexion.createStatement();
            st.executeUpdate("DELETE FROM `boticaebenezer`.`proveedores` WHERE `proveedores`.`id_proveedor` = id_borrado;'");
            System.out.println("Se borró");


            }
            catch (SQLException s){
                System.out.println("SQLException: " + s.getMessage());
                System.out.println(s.getErrorCode());

            }

        }
        }


});

像这样更新了我的程序,这是我从 catch 中得到的错误。

SQLException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''' 附近使用正确的语法

1064

我不知道如何评估 id_proveedor 是否与字符串 id_borrado 具有相同的值

编辑:找到解决方案,真正的sitnaxis是: st.executeUpdate("从boticaebenezer.proveedores删除proveedores.id_proveedor = '" + id_borrado + "';");

感谢您的帮助:)

【问题讨论】:

    标签: java mysql sql jdbc jtable


    【解决方案1】:

    使用executeUpdate 进行数据库写入操作。同时使用PreparedStatement 来防止SQL Injection 攻击。

    String sql = "DELETE FROM proveedores WHERE id_proveedor=?";
    PreparedStatement preparedStatement =  conexion.prepareStatement(sql);
    preparedStatement.setString(1, "id_borrado");
    
    int rows = preparedStatement.executeUpdate();
    

    最后,始终在异常块中显示异常消息,以帮助找出SQLException 的问题。

    【讨论】:

    • 嗯,现在显示 System.out.println("Se borró");正确,但仍不会删除该行,请检查 sintaxis 吗?
    • 如果id_proveedor 是您的专栏名称,我会认为删除引号。
    • 我编辑了问题,更新了代码以查看它是否有更多帮助,我尝试了引号但什么也没做。
    • 我使用 DELETE FROM proofedores WHERE id_proveedor='Test' 它删除了 id 为“Test”的行,但在我的 java 程序中,我希望它删除与字符串“id_borrado”我不知道字符串评估的 sintaxis,这是我的问题。
    • @Adrian 使用 PreparedStatement? 占位符。谷歌一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多