0
可能重复:
Update a record if ID exist else Insert values更新,如果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();
}
%>
例外处理JSP页/dynatree/dbconnection.jsp在管线26 23:\t 24:\t字符串sqlCheck =“SELECT * FROM [UAP]。[dbo]。[UAP_EMPLOYEE] where EMP_EMPLOYEE_ID ='“+ empId +”'“; 25:\t PreparedStatement prpStatementCheck = conn.prepareStatement(sqlCheck); 26:\t prpStatementCheck.setString(1,empId); 27:\t prpStatementCheck.setString(2,fName); 28:\t prpStatementCheck.setString(3,lName); 29:\t ResultSet rsCheck = prpStatementCheck.executeQuery(); 索引1超出范围。 – Nash 2012-08-13 00:15:38
此错误表明旧语法仍在使用,例如引号EMP_EMPLOYEE_ID,没有PreparedStmt placeolders,'?'等。 – Reimeus 2012-08-13 01:01:00
即使在按照您的建议更改prpStatement之后也会出现同样的错误。发生
例外处理JSP页/dynatree/dbconnection.jsp在管线26 23:\t 24:\t字符串sqlCheck =“SELECT * FROM [UAP] [DBO] [UAP_EMPLOYEE]其中EMP_EMPLOYEE_ID =。。 “+ EMPID +” “; 25:\t PreparedStatement prpStatementCheck = conn.prepareStatement(sqlCheck); 26:\t prpStatementCheck.setInt(1,Integer.parseInt(empId)); 27:\t prpStatementCheck.setString(2,fName); 28:\t prpStatementCheck.setString(3,lName); 29:\t ResultSet rsCheck = prpStatementCheck.executeQuery(); – Nash 2012-08-13 06:33:38