用特定值更新不同的列值

时间:2018-09-09 09:32:10

标签: java sql

一个表具有一个名为“ score”的列,其值不同。

 |名称|联系区域|得分||


|詹姆斯+222451 | eastp | 70 | |
|吉米+222451 | eestp || 80 ||
|乔什+222451 | ecstp || 50 ||
|约翰· +222451 || efstp || 60 | |

我想用一个特定值更新所有得分值。例如。用10更新所有得分值。
因此值70将为80
值80将为90
值50将是60
值60将是70
请编写代码以实现此目标。
写下了这一点,但所有列均更改为相同的值。请帮忙。

int reg = 10; 

try {

    String sql1 = "select Score from db_table where ID=db_table.ID";
    pst = con.prepareStatement(sql1);
    rs = pst.executeQuery();
    while(rs.next())
    {
        int ad = rs.getInteger("Score");
        int fad = ad+reg;
        String sql2 = "update db_table set Score='" + fad + "' where _ID=db_table.ID";
        pst = con.prepareStatement(sql2);
        pst.execute();
    }

} catch(SQLException | HeadlessException e)
{
    JOptionPane.showMessageDialog(null,e);
} finally
{
    try
    {
        rs.close();
        pst.close();
    } catch(Exception e)
    {}
}

但是在任何时候执行时,整个列值都将被替换为相同的值“ 10”。而不是将每个列的值都增加10。请帮助

2 个答案:

答案 0 :(得分:1)

使用以下查询:

UPDATE db_table 
SET score = score + 10

因此,基本上,您不需要先SELECT的所有乐谱,然后在Java代码中对其进行操作,并逐个使用UPDATE。相反,请按照以下步骤在Java代码中更改您的 try块

try
{
        String sql1 = "UPDATE db_table Set score = score + " + String.valueOf(reg);
        pst = con.prepareStatement(sql1);
        rs = pst.executeQuery();
}

答案 1 :(得分:0)

尝试一下:

int reg = 10; 
try{
    String sql1="select Score from db_table where ID=db_table.ID";
    pst=con.prepareStatement(sql1);
    rs=pst.executeQuery();
    while(rs.next()){
        int ad = rs.getInteger("Score");
        int fad = ad+reg;
        String sql2 = "update db_table set Score=Score + "+fad+" where _ID=db_table.ID";
        pst=con.prepareStatement(sql2);
        pst.execute();
    }
}catch(SQLException | HeadlessException e){
    JOptionPane.showMessageDialog(null,e);
}finally{
  try{
    rs.close();
    pst.close();
  }
  catch(Exception e){}
}