询问:用JDBC连接 Oracle时,总是出现这个错误!程序如下:
import java.sql.*;public class TestJDBC { public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept");
while(true){
System.out.println(rs.getString("deptno"));
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(rs != null) {
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
引入jar包是 ojdbc14.jar  用的是Oracle 10g ,jdk5.0  谢谢!

解决方案 »

  1.   

    补充: 用 Oracle的 SQL plus 查询时,没有任何问题的
      

  2.   

    <<<<
    rs = stmt.executeQuery("select * from dept");
    while(true){
    System.out.println(rs.getString("deptno"));
    }
    >>>>
    这上边,是想死循环吗?
    应该用:while (rs.next())吧
      

  3.   

    OK,我复制错了,程序源代码确实是  while(rs.next()) 。呵呵 sorry
    错误依旧
      

  4.   


    个人感觉是oracle版本跟jdbc驱动包不匹配的问题,因为都报了sdu mismatch了!oracle 10g数据库用的一般是classes12.jar驱动包!
      

  5.   


    能把完整的异常栈打出来吗?另外,可以试着换用另一个jdbc driver试试。
    完整的异常栈有益于判断到底什么原因
      

  6.   

    java.sql.SQLException: Io 异常: Size Data Unit (SDU) mismatch
    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:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    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 TestJDBC.main(TestJDBC.java:13)
      

  7.   

    上面几位确实说的比较对,我正在正在下载  oracle 10g 的 10.20.4.0 补丁
      

  8.   

    原来出错在这里:
    conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");你把127.0.0.1换成你的机器名试试