我正在編寫一個程序,我正在改變角色。 更改角色過程涉及從兩個表中刪除(清除當前角色/組),插入兩個表(設置角色/組)。在Java程序中多刪除MSSQL刪除查詢
我在我的連接字符串中有allowMultipleQueries = true
,但它看起來像只有第一個查詢正在運行。
該數據庫是一個MSSQL數據庫。
有沒有辦法來運行這兩個查詢?我可以從兩個表中刪除嗎?
我的代碼如下:
JButton changeRoleBtn = new JButton("Change Role");
changeRoleBtn.setBounds(50, 375, 150, 30);
changeRoleBtn.setToolTipText("Changes the role of the User");
changeRoleBtn.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (requesterRole.isSelected())
{
StringBuffer getRolesQuery3 = new StringBuffer("delete from hib.personrole where personid = '");
getRolesQuery3.append(userID).append("'");
StringBuffer getRolesQuery4 = new StringBuffer("delete from hib.persongroup where 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 is a Requester");
System.out.println(rs);
System.out.println(rs1);
}
}
catch(Exception e2)
{
System.out.println(e2);
}
}
}
});
我已經改變了它有準備的發言中,我碰到下面的錯誤,雖然當我運行它。 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 from hib.personrole where personid = ?");
ps2 = con.prepareStatement("delete from hib.persongroup where personid = ?");
ps1.setInt(1, userID);
ps2.setInt(2, userID);
ps1.executeQuery();
ps2.executeQuery();
con.commit();
userRoleLbl.setText("The user is a requester");
}
catch(Exception e3)
{
e3.printStackTrace();
}
}
}
});
SQL注入提前!更好地使用準備好的語句:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html – Barranka
你的意思就像'從hib.personrole中刪除personid在([pid1],[pid2])''中? – Lucas
Javadocs是你的朋友。 '默認情況下,每個Statement對象只能同時打開一個ResultSet對象。因此,如果一個ResultSet對象的讀取與另一個ResultSet對象的讀取交錯,則每個對象必須由不同的Statement對象生成。在Statement接口中的所有執行方法隱式關閉一個語句的當前ResultSet對象(如果存在一個打開的對象)。http://docs.oracle.com/javase/6/docs/api/java/sql/Statement.html –