Вопрос по sql-server, jsp, java – Обновите запись, если идентификатор существует, вставьте значения

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; 
    }
Какую ошибку вы получаете при отладке? И по какой линии это происходит? Zakaria
Можете ли вы попробовать безSQL injection? Remus Rusanu

Ваш Ответ

3   ответа
1

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

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

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

Да я пользуюсь 2008 Nash
0

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

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

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

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

boolean exists = false;

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

Похожие вопросы