我是SQL和数据库的新手。请用基本语言回答我的问题。我无法更新仅包含一个表和一列的数据库值。它由一个角色值(INT类型)组成,我需要它来选择用户的角色。下面是代码:
else if (check==13)//failing to update
{
try
{
Connection connection = DriverManager.getConnection(url, username, password);
Statement s=connection.createStatement();
ResultSet pass=s.executeQuery("Select * from role");
PreparedStatement ps;
int up=cval;// cval is a int value from outside the else if block
if ((up<0)||(up>3))
System.out.println("Role doesn't exist");
else {
ps = connection.prepareStatement("Update role set roleid="+up);
ps.executeUpdate();
}
while (pass.next())
role=pass.getInt("roleid");
if (role==up)
System.out.println("Role changed successfullyn");
else
System.out.println("Role change unsuccessfuln");
}
catch (Exception e)
{
System.out.println("Connection failed");
}
}
每次我检查值时,它都没有更新。但是,如果我再次执行这段代码,它就会更新。连接没有问题,因为我也对我的数据库做了其他事情。
您在更新表之前获得了ResultSetpass
,因此它包含旧值。
移动这一行:
ResultSet pass=s.executeQuery("Select * from role");
ps=connection.prepareStatement("Update role set roleid=?");
ps.setInt(1,up);
ps.executeUpdate();
prepareStatement代码错误