executeUpdate("insert into User_info (UserName,PassWord,Gender,Tel,Purview,IdentityCard,Question,Answer,Interest) values ('"+username+"','"+pwd1+"','"+gender_insert+"','"+tel+"','"+purview+"','"+identity_card+"','"+question+"','"+answer+"','"+interest+"')");请问应该怎么改才行了?

解决方案 »

  1.   

    那就是你主键的值太大,超出了table列规定的长度,检查下。如果是,那么你修改这个值,要么把table列长度放大。
      

  2.   

    不是这样的,
    "insert into User_info(UserName,PassWord,Gender,Tel,Purview,IdentityCard,Question,Answer,Interest) values ('daming924','daming87924','1','13662311345','1','00000','00000','000000','5555555')"
    这样我在sql查询分析器就提示:以 'insert into User_info(UserName,PassWord,Gender,Tel,Purview,IdentityCard,Question,Answer,Interest) values ('daming924','daming879' 开头的 标识符 太长。最大长度为 128。
    去掉""就行了,但在
    executeUpdate("insert into User_info (UserName,PassWord,Gender,Tel,Purview,IdentityCard,Question,Answer,Interest) values ('"+username+"','"+pwd1+"','"+gender_insert+"','"+tel+"','"+purview+"','"+identity_card+"','"+question+"','"+answer+"','"+interest+"')");怎么改啊? 
      

  3.   

    符号打的位置有问题,分析器认为你前边到'daming879'位置都是一个命令的开始了。
      

  4.   

                        
    conn.setAutoCommit(false);    
                        PreparedStatement ps =    
                        conn.prepareStatement("insert into dept values (?, ?, ?)");    
                        //Change batch size for this statement to 3    
                        ((OraclePreparedStatement)ps).setExecuteBatch (3);    
                        //--------#1------------    
                        ps.setInt(1, 23);    
                        ps.setString(2, "Sales");    
                        ps.setString(3, "USA");    
                        ps.executeUpdate(); //JDBC queues this for later execution 
      

  5.   

    楼上各位可能理解错了。
    楼主把带引号的整个字符串"insert into。。"放在sql查询分析器里查,分析器当然说这个标识符太长了。因为外面有“”,分析器把它解析成一个标识符,而不是一句sql。
    所以楼主说:去掉""就行了。去掉两边的引号,就是一句正确的sql了。所以楼主什么也不用担心,这其实是虚惊一场。只要保证java代码里sql拼装的正确就好了。