操作数据库的语句如下: public void insert(){
init();
String name = db.getName();
String password = db.getPassword();
String creator = db.getCreator();
String description = db.getDescription();

Connection conn = null;
PreparedStatement stmt = null;

try{
conn = dataSource.getConnection();
stmt = conn.prepareStatement("INSERT INTO DATABASES(DBNAME,DBPASSWORD,DBCREATOR,DBDESCRIPTION) VALUES(?,?,?,?)");
stmt.setString(1, name);
stmt.setString(2, password);
stmt.setString(3, creator);
stmt.setString(4, description);
}catch(SQLException e){
e.printStackTrace();
}
finally{
if(stmt != null){
try{
stmt.close();
}catch(SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}

}tomcat报错:java.sql.SQLException: 无法从套接字读取更多的数据 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208) 
at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1118) 
at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070) 
at oracle.jdbc.driver.T4C8TTIpro.receive(T4C8TTIpro.java:131) 
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:867) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268) 
at oracle.jdbc.driver.PhysicalConnection. <init>(PhysicalConnection.java:414) 
at oracle.jdbc.driver.T4CConnection. <init>(T4CConnection.java:165) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:281) 
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:269) 
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:253) 
at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:234) 
at thesis.tdms.createDB.Test.insert(Test.java:32) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.el.parser.AstValue.invoke(AstValue.java:131) 
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) 
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68) 
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77) 
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91) 
at javax.faces.component.UICommand.broadcast(UICommand.java:383) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752) 
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97) 
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
at java.lang.Thread.run(Unknown Source)为什么呢?谢谢指教一下~~~

解决方案 »

  1.   

    是oracle的问题
    但是怎么解决我也不清楚,帮你顶。
      

  2.   

     在楼主的代码中没有stmt..executeQuery();语句,SQL当然不能执行成功,会出现问题的
      

  3.   

    哦。忘了打上去了,是应该补上:stmt.executeUpdate(); 
    但是还是报这个错。
      

  4.   

    你的代码应该没问题的。应该就是oracle的问题。
    如果你用sqlPlus访问oracle都没问题的话,试试看换一下oracle的jar包?
      

  5.   

    at thesis.tdms.createDB.Test.insert(Test.java:32) 
    看看这行到底是什么问题,另外没见你的stmt.execute() 或 stmt.executeUpdate().如果是9i的话,建议用ojdbc4.jar 
      

  6.   

    我的是ORACLE 10g, jdk是6.0的。stmt.executeUpdate()这句已经加上去了。 驱动用的是ojdbc14.jar难道真要我重装oracle??
      

  7.   

    另外,我用sqlPlus访问是没问题的。
      

  8.   


    32行是conn = dataSource.getConnection();
    是不是我的dataSource有问题呢?
    dataSource是这样设置的:
      <bean id="dataSource"
       class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
       <property name="url" value="jdbc:oracle:thin:@192.168.1.101:1521:PLSExtProc"/>
       <property name="username" value="system"/>
       <property name="password" value="huangdezhi"/>
      </bean>真不知道该怎么弄了。账号密码都没错。不知道哪儿出了问题。