File file = new File(_sp.get_file1());
fis = new FileInputStream(file);
System.out.println( (int) file.length()) ;
ps.setBinaryStream(10, fis, (int) file.length());
ps.executeUpdate() ;报错
12411
java.sql.SQLException: 无法从套接字读取更多的数据
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java)
at com.xlh.data.daoImpl.SpDaoImpl.addSp(SpDaoImpl.java:42)
at com.xlh.data.daoImpl.TestSpDaoImpl.testaddSp(TestSpDaoImpl.java:34)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
java.sql.SQLException: 无法从套接字读取更多的数据
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java)
at oracle.jdbc.ttc7.Oclose.receive(Oclose.java)
at oracle.jdbc.ttc7.TTC7Protocol.close(TTC7Protocol.java)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.privateClose(OraclePreparedStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java)
at com.xlh.data.daoImpl.SpDaoImpl.addSp(SpDaoImpl.java:61)
at com.xlh.data.daoImpl.TestSpDaoImpl.testaddSp(TestSpDaoImpl.java:34)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
fis = new FileInputStream(file);
System.out.println( (int) file.length()) ;
ps.setBinaryStream(10, fis, (int) file.length());
ps.executeUpdate() ;报错
12411
java.sql.SQLException: 无法从套接字读取更多的数据
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java)
at com.xlh.data.daoImpl.SpDaoImpl.addSp(SpDaoImpl.java:42)
at com.xlh.data.daoImpl.TestSpDaoImpl.testaddSp(TestSpDaoImpl.java:34)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
java.sql.SQLException: 无法从套接字读取更多的数据
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java)
at oracle.jdbc.dbaccess.DBError.check_error(DBError.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalUB1(MAREngine.java)
at oracle.jdbc.ttc7.MAREngine.unmarshalSB1(MAREngine.java)
at oracle.jdbc.ttc7.Oclose.receive(Oclose.java)
at oracle.jdbc.ttc7.TTC7Protocol.close(TTC7Protocol.java)
at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.privateClose(OraclePreparedStatement.java)
at oracle.jdbc.driver.OraclePreparedStatement.close(OraclePreparedStatement.java)
at com.xlh.data.daoImpl.SpDaoImpl.addSp(SpDaoImpl.java:61)
at com.xlh.data.daoImpl.TestSpDaoImpl.testaddSp(TestSpDaoImpl.java:34)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
解决方案 »
- 非unicode怎么转换成unicode
- 初学:如何把system的缺省登录方式改成sysdba?
- 推荐一个专业的数据库技术网站
- 批处理文件如何执行这个.sql文件
- 请问如何在unix下把oracle数据库中的表结构和数据导出成。sql的文本
- 关于DBMS_JOB的问题,高手请进
- 关于数据库自动关闭的问题
- 问一个简单的sql语句。
- Oracle在数据传输时进行一致性检查吗?
- 为什么我的Oracle9i点击了Setup.exe后没有反应,不能安装???(急,在线等,成功安装后给满分)
- 关于ORACLE日志的问题 高手赐教 有高手知道吗
- sql 中查找表名为中文带-,有人告诉用双引号,但双引号怎么加呢????
ps.setBinaryStream(10, fis, 111);
String sql = "insert into gys_sp values(?,?,?,?,?,?,?,?,?,?)";
Connection conn = null;
conn = dbFactory.getConnection();
PreparedStatement ps = null;
// Blob blob = new Blob() ;
boolean flag = false;
ResultSet rs = null; try {
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
ps.setInt(1, _sp.getId());
ps.setString(2, _sp.get_spbm());
ps.setString(3, _sp.get_spmc());
ps.setDouble(4, _sp.get_spsjr());
ps.setDouble(5, _sp.get_spsj());
ps.setDouble(6, _sp.get_yf());
ps.setString(7, _sp.get_gg());
ps.setString(8, _sp.get_jtdz());
ps.setString(9, _sp.get_spjs());
ps.setString(10,"1");
ps.executeUpdate(); sql = "select tp from gys_sp where id_admin=? and spbm=? FOR UPDATE"; ps = conn.prepareStatement(sql);
ps.setInt(1, _sp.getId());
ps.setString(2, _sp.get_spbm());
rs = ps.executeQuery();
if (rs.next()) {
System.out.println("1") ;
BLOB blob = (BLOB)rs.getBlob("tp") ;
System.out.println("2") ;
OutputStream outStream = ((BLOB) blob)
.getBinaryOutputStream();
System.out.println("3") ;
File file = new File(_sp.get_file1());
System.out.println("4") ;
BufferedInputStream inStream = new BufferedInputStream(
new FileInputStream(file));
System.out.println("5") ;
byte[] b = new byte[blob.getBufferSize()]; int lenth = 0; while ((lenth = inStream.read(b)) != -1) {
outStream.write(b, 1, lenth);
} inStream.close();
outStream.flush();
outStream.close();
conn.commit() ; }
conn.setAutoCommit(true);
flag = true; } catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
} catch (Exception e) {
System.out.println(e.getMessage());
} finally { try { if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
} if (conn != null) {
dbFactory.closeConnection(conn);
} } catch (Exception e) {
e.printStackTrace();
}
}
我改成这样但还是报错
java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/Blob;
at com.xlh.data.daoImpl.SpDaoImpl.addSp(SpDaoImpl.java:59)
at com.xlh.data.daoImpl.TestSpDaoImpl.testaddSp(TestSpDaoImpl.java:34)
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 junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
原来是驱动版本太低
旧的版本是 oracle.jdbc.driver.OracleResultSetImpl.getBlob(String str)而新版本是 oracle.jdbc.driver.OracleResultSetImpl.getBlob(Blob str)
只是驱动的问题?这个咋就可以哟。
ps.setBinaryStream(10, fis, 111);