0

だから... JTableを使用してデータベースから行を削除したいのですが、削除されない理由がわかりません.DELETE命令の構文が間違っている可能性があります...

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());

            }

        }
        }


});

このようにプログラムを更新しました。これがキャッチから得られるエラーです。

SQLException: SQL 構文にエラーがあります。1 行目の「」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

1064

id_proveedor が文字列 id_borrado と同じ値を持っているかどうかを評価する方法がわかりません

boticaebenezer編集:解決策が見つかりました。proveedores実際のシットナシスは次のとおりproveedoresですid_proveedor:

あなたのすべての助けに感謝します:)

4

1 に答える 1

1

executeUpdateデータベースの書き込み操作に使用します。また、 SQL インジェクション攻撃PreparedStatementから保護するために代わりに使用します。

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

int rows = preparedStatement.executeUpdate();

最後に、例外ブロックに常に例外メッセージを表示して、SQLException.

于 2013-05-16T01:05:55.497 に答える