如果存在ID则更新记录否则插入值

时间:2012-08-12 19:04:02

标签: java sql-server jsp

如果记录存在,我正在尝试更新值,否则将值插入数据库。但是,这是行不通的。我写了下面的代码。

 String sqlCheck = "Select * from [UAP].[dbo].[UAP_EMPLOYEE] where EMP_EMPLOYEE_ID = '"+empId+"' ";
    PreparedStatement prpStatementCheck = conn.prepareStatement(sqlCheck);
    prpStatementCheck.setString(1, EMP_EMPLOYEE_ID);
    ResultSet rsCheck=prpStatementCheck.executeQuery();
    String check=null;

     while((rsCheck.next())
    {
         if(rsCheck.next()>0)
          update statement; 
         else
             Insert Statement; 
    }

3 个答案:

答案 0 :(得分:1)

setString应该与绑定变量一起使用: 您的sql字符串应如下所示:

"Select * from [UAP].[dbo].[UAP_EMPLOYEE] where EMP_EMPLOYEE_ID = ?"

您的SqlServer的版本是什么? 如果是2008或更高版本,则可以使用UPSERT命令。

答案 1 :(得分:1)

这个条件虽然((rsCheck.next())只会在员工存在的情况下执行。 否则,该代码

if(rsCheck.next()>0)
      update statement; 
     else
         Insert Statement; 

无法访问。 你可以使用类似的东西:

boolean exists = false;

 while((rsCheck.next())
{
     update statement; 
     exists = true;
}
if(!exists) insert statement; 

答案 2 :(得分:0)

由于EMP_EMPLOYEE_ID字段是INTEGER类型,请使用setInt而不是setString

String sqlCheck = "Select * from [UAP].[dbo].[UAP_EMPLOYEE] where EMP_EMPLOYEE_ID = ?";
PreparedStatement prpStatementCheck = conn.prepareStatement(sqlCheck);
prpStatementCheck.setInt(1, EMP_EMPLOYEE_ID);