java - 如果 ID 在数据库中可用,则更新,否则插入

标签 java sql-server-2008 jsp

Possible Duplicate:
Update a record if ID exist else Insert values

如果记录存在,我正在尝试更新值,否则将值插入数据库中。然而,这是行不通的。我写了下面的代码:

注意:(版主,这是我几分钟前问过的重复问题。我无法编辑上一个问题。如有任何不便,敬请谅解。请求您删除。)

 <%
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();   

     }

%>

最佳答案

由于 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));

关于java - 如果 ID 在数据库中可用,则更新,否则插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11925692/

相关文章:

java - Spring MVC + Session 属性和多个选项卡

sql-server - SQL Server 错误。标识列的显式值....只能在使用列列表且 IDENTITY_INSERT 为 ON 时指定

java - Spring Cloud Dataflow Stream应用程序-将文件夹添加到类路径

java - describe 和 select on table in derby 不使用与 create 相同的列顺序

sql-server - 数据库设计: one huge table or separate tables?

java - 数据库交互后重定向

javascript - 如何使用javascript隐藏JSP生成的文本字段?

java - 消息包间歇性地无法正确渲染

java - 新 Jframe 关闭时更新 Jlist

sql - 如何使用列值到 "IN"子句? SQL服务器