2012-02-10 3 views
0

문자열 값으로 연결 한 후 시퀀스에 다음 값을 삽입하려고합니다. 예 : case12. 여기서 'case'는 문자열이고 '12'는 다음 시퀀스 값이됩니다. jsp 페이지에서이 코드를 사용하고 있습니다.문자열 concat sequence 다음 값

String name=request.getParameter("name").toString(); 
String pwd=request.getParameter("pass").toString(); 
out.print(name+" and "+pwd); 
String add="case"; 
PreparedStatement ps = connect.prepareStatement("insert into test(caseid,userid,pass) values('CONCAT('"+add+"',test_seq.nextval)',?,?)"); 
      ps.setString(1,name); 
      ps.setString(2,pwd); 
      ps.executeUpdate(); 
      connect.commit(); 
      connect.close(); 

하지만, 난 java.sql.SQLException: ORA-00917: missing comma

아무도 나에게 위의 문제에 대한 해결책을 말할 수있는이 오류를 받고 있어요. 어떤 도움을 주셔서 감사합니다. !!

답변

2

가능하면 SQL 문을 동적으로 어셈블하기 위해 매개 변수를 전달하는 것이 좋습니다. 따라서 "case"를 하드 코딩 된 상수로 사용하지 않으려면 바인드 변수 여야합니다.

또한 CONCAT 호출과 함께 작은 따옴표를 사용하지 않으려합니다. 이런 식으로하면 효과가 있습니다.

String name=request.getParameter("name").toString(); 
String pwd=request.getParameter("pass").toString(); 
out.print(name+" and "+pwd); 
String add="case"; 
String sqlStmt = "insert into test(caseid,userid,pass) values(CONCAT(?,test_seq.nextval),?,?)"; 
PreparedStatement ps = connect.prepareStatement(sqlStmt); 
ps.setString(1,add); 
ps.setString(2,name); 
ps.setString(3,pwd); 
ps.executeUpdate(); 
connect.commit(); 
connect.close(); 
+0

감사합니다 .. !! 그것은 작동합니다 ... :) 하지만 ps.setString (1, add)이어야합니다; not ps.setString (1, case); 하지만 큰 문제는 아닙니다. 도와 주셔서 감사합니다 –

+0

@sql_query - 네, 죄송합니다. 적절한 변수 이름을 사용하도록 변경했습니다. –