我正在编写一个程序,我正在改变角色。 更改角色过程涉及从两个表中删除(清除当前角色/组),插入两个表(设置角色/组)。在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 –