sql - Multiple Delete MSSQL delete queries in Java Program -


i writing program changing roles. change role process involves deleting 2 tables(to clear current role/group), inserting 2 tables(to set role/group).

i have allowmultiplequeries = true in connection string, looks first query running.

the database mssql db.

is there way run both queries? can delete both tables?

the code have below:

jbutton changerolebtn = new jbutton("change role");     changerolebtn.setbounds(50, 375, 150, 30);     changerolebtn.settooltiptext("changes role of user");     changerolebtn.addactionlistener(new actionlistener()     {         public void actionperformed(actionevent e)         {             if (requesterrole.isselected())             {                 stringbuffer getrolesquery3 = new stringbuffer("delete hib.personrole personid = '");                 getrolesquery3.append(userid).append("'");                 stringbuffer getrolesquery4 = new stringbuffer("delete hib.persongroup personid = '");                 getrolesquery4.append(userid).append("'");                 try                  {                     resultset rs = stmt.executequery(getrolesquery3.tostring());                     resultset rs1 = stmt.executequery(getrolesquery4.tostring());                      boolean empty = true;                     if(empty)                     {                         userrolelbl.settext("the user requester");                         system.out.println(rs);                         system.out.println(rs1);                     }                 }                 catch(exception e2)                 {                     system.out.println(e2);                 }             }         }     }); 

i have changed have prepared statement following error though when run it. java.sql.sqlexception: invalid parameter index 2.

    changerolebtn.addactionlistener(new actionlistener()     {         public void actionperformed(actionevent e)         {             if (requesterrole.isselected())             {                 try                 {                     preparedstatement ps1, ps2;                     ps1 = con.preparestatement("delete hib.personrole personid = ?");                     ps2 = con.preparestatement("delete hib.persongroup personid = ?");                      ps1.setint(1, userid);                     ps2.setint(2, userid);                      ps1.executequery();                     ps2.executequery();                      con.commit();                      userrolelbl.settext("the user requester");                  }                 catch(exception e3)                 {                     e3.printstacktrace();                 }              }         }     }); 

you have execute each delete instruction independently, there's no restriction it.

as said in comment, code vulnerable sql injection, suggest use prepared statements:

 // ...  preparedstatement ps1, ps2;  ps1 = con.preparestatement("delete hib.personrole personid = ?");  ps2 = con.preparestatement("delete hib.persongroup personid = ?");   ps1.setstring(1, userid);  ps2.setstring(1, userid);   ps1.execute();  ps2.execute();  // ... 

further reference:

hope helps


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -