package com.itjob.bookstore.dao;import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.itjob.bookstore.vo.User;public class UserDao {
public void registerUser(User user) {
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@192.168.0.1:1521:orcl";
String username="panyu";
String userpwd="panyu329";
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
try { Class.forName(driver);
conn = DriverManager.getConnection(url, username, userpwd);
StringBuffer sql=new StringBuffer();
sql.append("insert into users(user_account,user_password,user_name,user_sex,user_birth,");
sql.append("user_tel,user_phone,user_address,user_post,user_email,user_tag) values (");
sql.append("sql_bookstore.nextval,");
sql.append(user.getUser_account());
sql.append(",");
sql.append(user.getUser_password());
sql.append(",");
sql.append(user.getUser_name());
sql.append(",");
sql.append(user.getUser_sex());
sql.append(",");
sql.append(user.getUser_birth());
sql.append(",");
sql.append(user.getUser_tel());
sql.append(",");
sql.append(user.getUser_phone());
sql.append(",");
sql.append(user.getUser_address());
sql.append(",");
sql.append(user.getUser_post());
sql.append(",");
sql.append(user.getUser_email());
sql.append(",");
sql.append(user.getUser_tag());
sql.append(" )");

System.out.println(sql.toString());

PreparedStatement ps=conn.prepareStatement(sql.toString());
ps.executeUpdate();

} catch (Exception e) {
e.printStackTrace();
}finally{
if(conn!=null)
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
}
这个是我写的一个连接数据库的程序,可是在运行的时候提示的却是,如下信息:
insert into users(user_account,user_password,user_name,user_sex,user_birth,user_tel,user_phone,user_address,user_post,user_email,user_tag) values (sql_book.nextval,33,33,33,1,33,33,33,null,33,33,1 )
java.sql.SQLException: ORA-00913: 值过多 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at com.itjob.bookstore.dao.UserDao.registerUser(UserDao.java:56)
at com.itjob.bookstore.bo.UserBo.registerUser(UserBo.java:14)
at com.itjob.bookstore.servlet.RegisterServlet.doPost(RegisterServlet.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
上面这个是什么意思呢?是不是在插入数据的时候,要按照数据库定义的顺序插入呢?还是可以打乱顺序来的?
还有就是如何新建一个orcle数据库呢?

解决方案 »

  1.   

    兄弟,你的insert语句插入了
    user_account,
    user_password,
    user_name,
    user_sex,
    user_birth,
    user_tel,
    user_phone,
    user_address,
    user_post,
    user_email,
    user_tag
    共11个字段,但值里有
    sql_book.nextval,
    33,
    33,
    33,
    1,
    33,
    33,
    33,
    null,
    33,
    33,
    1
    共12个值,所以会提示你“值过多”嘛。
    你自己看看是字段少写了一个还是值多写了一个
      

  2.   

    insert into users(user_account,user_password,user_name,user_sex,user_birth,user_tel,user_phone,user_address,user_post,user_email,user_tag) values (sql_book.nextval,33,33,33,1,33,33,33,null,33,33,1 )
    java.sql.SQLException: ORA-00913: 值过多很明显你的字段是11个,你赋值赋了12个,能对吗?这么明显的错误提示都不看