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 に答える