0

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

 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; 
    }
4

3 回答 3

1

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

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

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

于 2012-08-12T19:10:51.913 回答
1

只有当员工存在时才会执行该条件 while((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; 
于 2012-08-12T19:32:06.170 回答
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);
于 2012-08-12T19:17:05.923 回答