0

重複の可能性:
ID が存在する場合はレコードを更新する、そうでない場合は値を挿入する

レコードが存在する場合は値を更新しようとしています。そうでない場合は、データベースに値を挿入します。しかし、それは機能していません。私は以下のコードを書きました:

注: (モデレーターの皆様、これは私が数分前に繰り返した質問です。以前の質問を編集することはできません。ご不便をおかけして申し訳ありません。削除をお願いします。)

 <%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:sqlserver://10.222.10.19:1433", "sa", "admin1");



String empId = request.getParameter("empid");
String fName = request.getParameter("fName");
String lName = request.getParameter("lName");


String sqlCheck = "Select * from [UAP].[dbo].[UAP_EMPLOYEE] where EMP_EMPLOYEE_ID = "empId" ";
PreparedStatement prpStatementCheck = conn.prepareStatement(sqlCheck);
prpStatementCheck.setInt(1, Integer.parseInt(empId));
prpStatementCheck.setString(2, fName);
prpStatementCheck.setString(3, lName);
ResultSet rsCheck=prpStatementCheck.executeQuery();
String check=null;
boolean exists = false;

 while(rsCheck.next())
{

         Statement stmt = conn.createStatement();
         String sql= "UPDATE [UAP].[dbo].[UAP_EMPLOYEE] SET EMP_EMPLOYEE_ID="+empId+", EMP_FNAME='"+fName+"', EMP_LNAME='"+lName+"' WHERE EMP_EMPLOYEE_ID= ?";
         stmt.executeUpdate(sql);
         exists = true;

     }
 if(!exists) 
     {
         String sql2 = "INSERT INTO [UAP].[dbo].[UAP_EMPLOYEE] (EMP_EMPLOYEE_ID, EMP_FNAME, EMP_LNAME ) VALUES (?,?,?)";
            PreparedStatement prpStatement1 = conn.prepareStatement(sql2);
            prpStatement1.setInt(1, Integer.parseInt(empId));

            prpStatement1.setString(2, fName);
            prpStatement1.setString(3, lName);

            prpStatement1.execute();
            prpStatement1.close();   

     }

%>

4

1 に答える 1

1

EMP_EMPLOYEE_ID は INTEGER フィールドであるため、以下を使用する必要があります。

prpStatementCheck.setInt(1, Integer.parseInt(empId));

また、UPDATE 文字列のこのフィールドを囲む引用符を削除することもできます。

String sql= "UPDATE  [UAP_EMPLOYEE] SET EMP_EMPLOYEE_ID=" + empId + ", EMP_FNAME='" + fName+"', EMP_LNAME='" + lName + "' WHERE EMP_EMPLOYEE_ID= " + empId;

再びprpStatement1

prpStatement1.setInt(1, Integer.parseInt(empId));
于 2012-08-12T20:41:06.133 に答える