连接到oracle 10g数据库时获取IOException:-
Exception in thread "main" java.sql.SQLException: Io exception: Got minus one from a read call
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:363)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
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:839)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.myapp.struts.DBConnection.getDBConnection(DBConnection.java:21)
at com.myapp.struts.DBConnection.main(DBConnection.java:31)
Java 结果:1
我的类代码如下:-
package com.myapp.struts;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBConnection {
Connection connection = null;
public Connection getDBConnection()throws Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("OUTPUUT ********driver registered");
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE","system","system");
System.out.println("OUTPUUT ********connection established");
return connection;
}
public static void main(String args[])throws Exception{
DBConnection db = new DBConnection();
ResultSet result = null;
String query = "SELECT * FROM admin;";
Connection con = null;
con = db.getDBConnection();
System.out.println("OUTPUUT ********111111111");
Statement st =con.createStatement();
result = (ResultSet) st.executeQuery(query);
while(result.next()){
System.out.println("OUTPUUT ********");
System.out.println(result.getInt(1));
System.out.println(result.getString(2));
System.out.println(result.getString(3));
System.out.println(result.getString(4));
}
con.close();
}
}
还有一件事,我正在使用Netbeans IDE并开发一个struts项目。过去两天一直在努力解决这个问题,但尚未找到解决方案。
请帮忙????
如果使用JDBC连接Oracle 10g时遇到问题,请尝试以下操作:1. 关闭机器的 Wi-Fi。2. 停止甲骨文服务。3. 启动甲骨文服务。现在尝试使用 JDBC 与数据库连接。问题现在将得到解决。
尝试删除查询末尾的分号
String query = "SELECT * FROM admin";
我只需将连接网址替换为即可解决问题:connection = DriverManager.getConnection("jdbc:oracle:thin:@//127.0.0.1:1521/XE","system","sy stem"(; 感谢大家的支持。
试试这个网址
"jdbc:oracle:thin:@//localhost:1521/XE"
或者,"jdbc:oracle:thin:@//localhost:1521/xe"
您可能还想尝试这样做来追踪您的问题 -
暂时删除以下 while 部分
while(result.next()){ System.out.println("OUTPUUT ********"); System.out.println(result.getInt(1)); System.out.println(result.getString(2)); System.out.println(result.getString(3)); System.out.println(result.getString(4)); }
- 添加此内容来代替 while 循环 -
result.first();
- 之后也添加这个 -
System.out.println(result.getString(1));
- 检查您现在是否有任何例外
- 如果您没有出现异常,我认为,您在 while 循环中的一个或多个 result.getXXX(( 函数中遇到了问题。
是一种试错的答案。
希望这有帮助。
如果执行数据库关闭命令,那么它将不再允许新的连接,并且会出现此错误。
我也遇到了同样的问题,我通过将 8080 端口替换为 1521 来克服它谢谢大家对于像我这样的初学者来说,你们都做得很好