如果记录存在,我正在尝试更新值,否则将值插入数据库。但是,这是行不通的。我写了下面的代码。
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;
}
答案 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);