последовательность concat следующее значение со строкой - PullRequest
0 голосов
/ 10 февраля 2012

Я хочу, чтобы следующее значение последовательности было вставлено в таблицу после объединения с некоторым строковым значением. например: case12. Здесь 'case' будет строкой, а '12' будет следующим значением последовательности. я пытаюсь этот код на моей странице JSP.

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

Может кто-нибудь сказать мне решение вышеуказанной проблемы. Любая помощь приветствуется. !!

1 Ответ

2 голосов
/ 10 февраля 2012

Если это вообще возможно, предпочтительнее передавать параметры, чем динамически собирать оператор 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(); 
...