concat sequence下一个带字符串的值

时间:2012-02-10 18:44:29

标签: java jsp oracle10g sequence

我希望在连接一些字符串值后将序列下一个值插入表中。例如: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 个答案:

答案 0 :(得分: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();