0

JoptionPane を使用して mysql テーブルを更新しようとしています。したがって、最初に更新するIDについては、終了するかどうかを確認し、それを置き換える新しい値を要求するという考え方です。

ここにラインのソースがあります

else if(ae.getSource()==updateVid){
        String id =JOptionPane.showInputDialog("Enter ID you want to update:");


        try {
            con=DriverManager.getConnection(url,"root","success123");
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
            int numRows = stmt.executeUpdate("UPDATE FROM films WHERE id='"+id+"'");

            String ids =JOptionPane.showInputDialog("ID:");
            String fn=JOptionPane.showInputDialog("Title:");
            String sn =JOptionPane.showInputDialog("Description:");
            String tn =JOptionPane.showInputDialog("Year:");
            String frn =JOptionPane.showInputDialog("Art:");
            String fifn =JOptionPane.showInputDialog("Duration:");



            rs = stmt.executeQuery("SELECT * FROM films");
            JOptionPane.showMessageDialog(null,"Video has been Rented to the Out","New Rent" ,JOptionPane.OK_OPTION);
            while (rs.next()) {


            }
            rs.close();
            stmt.close();
            con.close();
        }
        catch (SQLException sqle) {
        }
    }
4

1 に答える 1

1

コードが SQL インジェクションに対して脆弱であるため、PreparedStatement代わりに使用しますStatement

これが必要だと思います:

String updateQuery = "UPDATE films set title = ?,description=?,year=?,art=?,duration=? where id=?";
PreparedStatement ps = con.prepareStatement(updateQuery);

String fn=JOptionPane.showInputDialog("Title:");
String sn =JOptionPane.showInputDialog("Description:");
String tn =JOptionPane.showInputDialog("Year:");
String frn =JOptionPane.showInputDialog("Art:");
String fifn =JOptionPane.showInputDialog("Duration:");

ps.setString(1,fn);
ps.setString(2,sn);
ps.setString(3,tn);
ps.setString(4,frn);
ps.setString(5,fifn);
ps.setString(6,id);
int numRows = ps.executeUpdate();
于 2013-03-24T10:00:21.503 に答える