Connection con=yy.getConn();
Statement  stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet  rs=null;
sql="select * from XG_BBSUSER where USERNAME='"+User_Name+"'";
rs=stmt.executeQuery(sql);
rs.last();
//out.println(sql);
if (rs.getRow()>0)
{
   response.sendRedirect("err.jsp?id=3");
}else

    SELECT XG_SEQ_BBSUSER.NEXTVAL INTO USER_ID_PA FROM DUAL;//直接在这里用报错?
请问怎么样处理这个序列?/sql="insert into XG_BBSUSER( 
USERID ,USERNAME,USERPASSWD,SEX,MAIL,ADDRESS,PHONE,OICQ,BIRTHDAY,TUPIAN,QIANMING,FANUM,FANFWEN,GRADE,DATE,ZAIXIAN,RENZHNEG)";
sql=sql+" values('"+USER_ID_PA+"','"+User_Name+"','"+User_Password+"','"+User_Sex+"','"+User_Email+"','"+User_Address+"','"+User_Mobile+"','"+User_Oicq+"','"+User_Birthday+"','"+User_Icon+"','"+User_Sign+"',0,1,'新手上路','"+yy.getTime()+"','在线','1')";
//out.println(sql);
stmt.executeUpdate(sql);
session.putValue("UserName",User_Name);
那位高手看看代码?
因为oracle里面没有自增字段,这些表是我从access里面转过来的
所有的代码都在jsp里面,所以只好在jsp里面用序列了?,原来不用插入id的,现在必须写进去!
请问正确的用法>

解决方案 »

  1.   

    那可以作个表专门管理每个序列字段,自增毕竟有很多缺点!看你写的很复杂!汗,看了郁闷!User_Name本身是个字符串,看你写的很累!
    sql="select * from XG_BBSUSER where USERNAME=User_Name";
    如果是个变量
    sql="select * from XG_BBSUSER where USERNAME="+User_Name;
    USERID是需要自增的字段不,可以写个方法读一个表的对应值,都后自加1,返回一个USERID在你这里USER_ID_PA,下面给你参考一下
    StringBuffer sql = new StringBuffer();
    ArrayList paraList = new ArrayList();
    String passCard = paraBean.getPassCard();
    String nickname = paraBean.getNickName();
    sql.append("SELECT PASSCARD FROM USER WHERE PASSCARD='"+passCard+"'");
    System.out.println("查询通行证是否已被使用: " + sql);
    result = daoCommand.executeQueryValidate(sql.toString(), paraList);
    if(result)
    {
    return false;
    }
    sql.setLength(0); //清空
    paraList.clear(); //清空ArrayList
    sql.append("SELECT NICKNAME FROM USER WHERE NICKNAME='"+nickname+"'");
    System.out.println("查询昵称是否已被使用: " + sql);
    result = daoCommand.executeQueryValidate(sql.toString(), paraList);
    if(result)
    {
    return false;
    }
    sql.setLength(0); //清空
    paraList.clear(); //清空ArrayList
    String date = DateTime.getSysDateTime();
    int userID = Sequence.getNextValue(Constants.TABLE_NAME_USER);//这个就是获取的自增数据!
    sql.append("INSERT INTO USER(USERID,NICKNAME,PASSCARD,PASSWORD,LOGINTIME,REGISTERTIME) VALUES(?,?,?,?,?,?)");
    logger.logDebug("通行证创建:" + sql);
    paraList.add(new Parameter(userID));
    paraList.add(new Parameter(nickname)); //昵称
    paraList.add(new Parameter(passCard)); //通行证
    paraList.add(new Parameter(paraBean.getPassword())); //密码
    paraList.add(new Parameter(date)); //最近登陆时间
    paraList.add(new Parameter(date)); //注册时间
    result = daoCommand.execute(sql.toString(), paraList);
      

  2.   

    我也觉很累,关键都是在jsp里写的,麻烦!
    请问我如下面的写法行不行??
    把序列直接加进去
    sql=sql+" values(XG_SEQ_BBSUSER.NEXTVAL,'"+User_Name+"','"+User_Password+"','"+User_Sex+"','"+User_Email+"','"+User_Address+"','"+User_Mobile+"','"+User_Oicq+"','"+User_Birthday+"','"+User_Icon+"','"+User_Sign+"',0,1,'新手上路','"+yy.getTime()+"','在线','1')";
      

  3.   

    我试了
    好象不报错,但是其他地方又出错了
    好象是access和oracle 的字段类型转换问题
      

  4.   

    XG_SEQ_BBSUSER.NEXTVAL就是序列的下一个值啊
    你把这个sql生成了,在pl/sql中调试一下不就可以了?
    晕!!
      

  5.   

    我是菜鸟拉,你们晕是很正常的
    我只想知道怎么样才能把这个自增的字段和其他字段一起插到表里去,但是oracle 的客户端真的很不爽
    请根据我上面的代码帮我想办法解决了
    二楼说的我知道了,但那是在java 类里写的
    我现在只要在jsp里的?
      

  6.   

    我在pl/sql里面调了,sql语句错误
    insert into XG_BBSUSER( USERID,USERNAME,USERPASSWD,SEX,MAIL,ADDRESS,PHONE,OICQ,BIRTHDAY,TUPIAN,QIANMING,FANUM,FANFWEN,GRADE,DATE,ZAIXIAN,RENZHNEG)
    values(XG_SEQ_BBSUSER.NEXTVAL,'wubo','123456','男','[email protected]','上海','12345978658','121212','26-4月-2006','dfsa','sdfsa','5','斑竹',systemdate,'在线','1')
      

  7.   

    invalid user.table.column, table.column, or column specification
    在date一行有错误