2012-02-10 4 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. Поэтому, если вы не хотите, чтобы «случай» был жестко закодированной константой, он должен быть переменной привязки.

Кроме того, вам не нужны одиночные кавычки вокруг звонка 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); не ps.setString (1, case); но, это не большая проблема. спасибо за вашу помощь –

+0

@sql_query - Да, извините. Изменил его, чтобы использовать правильное имя переменной. –

Смежные вопросы