Обновите запись, если идентификатор существует, вставьте значения

Я пытаюсь обновить значение, если запись существует, иначе вставьте значения в базу данных. Однако это не работает. Я написал код ниже.

 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; 
    }
 Zakaria12 авг. 2012 г., 21:05
Какую ошибку вы получаете при отладке? И по какой линии это происходит?
 Remus Rusanu12 авг. 2012 г., 21:55
Можете ли вы попробовать безSQL injection?

Ответы на вопрос(3)

Решение Вопроса

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);
 Nash12 авг. 2012 г., 22:22
Reimeus, EMP_EMPLOYEE_ID - это целое число в БД.
 12 авг. 2012 г., 22:25
Ах ха, пожалуйста, смотрите мое обновление

Ваша строка sql должна выглядеть так:

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

Какая версия вашего SqlServer? Если это 2008 или выше, вы можете использоватьUPSERT команда.

 Nash12 авг. 2012 г., 21:16
Да я пользуюсь 2008

ае, если сотрудник существует. В противном случае этот код

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

недоступен Вы можете использовать что-то вроде этого:

boolean exists = false;

 while((rsCheck.next())
{
     update statement; 
     exists = true;
}
if(!exists) insert statement; 
 13 авг. 2012 г., 08:19
если id является ключом, вы можете просто, если (rs.next ()) обновить еще вставить

Ваш ответ на вопрос