0 0

关于Java连接Oracle数据库的。5

源码:import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* @author zhuyefeng
*
*/
public class ora {
public static void main(String[] args){
Connection conn = null;
        Statement stmt = null;
        ResultSet res = null;
        int ret;
        String sql = null;
       
        try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:8086:Xe",
"yfzhu","yfzhu");
stmt = conn.createStatement();
sql = "select * from a";
ret = stmt.executeUpdate(sql);

} catch (ClassNotFoundException se) {
// TODO: handle exception
se.printStackTrace();
}
catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

出错情况:
java.sql.SQLException: Io 异常: Got minus one from a read call
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 www.zjut.jdbc.ora.main(ora.java:28)
问题补充:
谢谢大家的回答,还是不行阿,
ResultSet res;
res = stmt.executeQuery(sql);
我试过了,端口我是改过的,由8080改为8086的,也有那个表a的。还有数据库也是运行的。
问题补充:
SQL> select * from a;

ID FNAME      LNAME
-- ---------- ----------
01 yf       zhu


问题补充:
BANNER
----------------------------------------------------------------
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

问题补充:
java.sql.SQLException: Io 异常: Got minus one from a read call
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:418)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:521)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at oracle.Oracle.main(Oracle.java:30)
2009年4月14日 01:03

31个答案 按时间排序 按投票排序

0 0

采纳的答案

1,端口,
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:8086:Xe",
"yfzhu","yfzhu");

你确信是8086?不是1521?

2,ip,
查看listerner日志,看登陆数据库时有无一下错误
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied

查看登陆ip,是否在sqlnet.ora中,如果不再加入后重启listerner服务

2009年4月14日 09:01
0 0

更正一下:

Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE",user,pwd);  

2009年4月17日 13:23
0 0

看输出的异常信息,显然是获取数据库连结时出现的错误。
跟后面的语句、表中有没有哪个表都没有什么关系。

所以,还是建议检查一下你的URL连结参数。
我记着我用的都是这样的形式:

Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/XE");

XE是快捷版的实例名,如果用的不是快捷版换成相应的实例名。

2009年4月17日 13:22
0 0

1,端口,
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:8086:Xe",
"yfzhu","yfzhu");

你确信是8086?不是1521?
oracle默认1521

2009年4月16日 18:15
0 0

查询怎么能是executeUpdate呢?又不是增删改,用executeQuery(sql)试试

2009年4月16日 12:21
0 0

第3种可能的办法 
sqlnet.ora文件中
TCP.VALIDNODE_CHECKING=YES
将它改成
TCP.VALIDNODE_CHECKING=NO

2009年4月16日 09:17
0 0

帮你在网上搜了些资料:

针对:Got minus one from a read call
可能行的解决办法:

1.认为该问题是因为数据库连接池满了,解决办法是扩数据库连接池

2.
今天paidmail数据库负责人问我一个问题:
java.sql.SQLException: Io 异常:Got minus one from a read call

网上查了半天,有人遇到过这个问题,但是没有解决方案。后来上了metalink,搜索后找到这篇
https://metalink.oracle.com/metalink/plsql/f?p=130:14:11630255784642420701::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,284090.1,1,1,1,helvetica


查看listerner日志,果然发现登陆时候有如下错误:
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
  TNS-00516: Permission denied

和产品负责人确认登陆ip,发现果然不在sqlnet.ora中,加入后重启listerner,一切正常!
原文出处:http://zhaizhenxing.blog.51cto.com/643480/134864

2009年4月16日 09:14
0 0

实话点说,这问题确实不该问,犯了这错先给点耐心自己去解决,是连接?是配置?还是SQL连接语句问题?最好的解决办法莫过于自己先想办法解决。。费了吃奶的力还搞不定就来问问。。。楼上S已经正解啦!

2009年4月15日 23:37
0 0

噫,答案还不能改的。
补充一下:
6.查看sqlnet.ora等。

2009年4月15日 23:19
0 0

1.程序错误在getConnection
  因此,跟executeUpdate是没有关系的。虽然这个会在后面造成错误。

2.sqlplus / as sysdba

   select * from v$version

   确定一下oracle的版本先。

3.看一下你的oracle driver包是从哪里装载的。
  通常是ojdbc14.jar
  解压一下,看看描述文件中的版本是否跟step 2看到的一致。

4.不一致,则替换一下。
  一致的话,看看listener.log/alert_sid.log有没有什么可以信息(ora-xx)

5.localhost换上ip看看。

2009年4月15日 22:31
0 0

哈哈。不会吧。这么简单的东西。

2009年4月15日 22:27
0 0

1、请检查你的驱动包,不行换个。
2、如果用的是Eclipse,调试看看,养成调试的好习惯。

2009年4月15日 16:27
0 0

1. 请确定你的 a表已经存在;
2. 请确定你的数据库服务已启动;
3. 查询操作请使用:stmt.executeQuery(sql); 方法;
4. 更新操作请使用:stmt.executeUpdate(sql); 方法;
5. 数据库的相关操作 请查看 J2SE 中 JDBC 部分。

2009年4月15日 15:24
0 0

ret = stmt.executeUpdate(sql); 应该改为res = stmt.executeQuery(sql);

2009年4月15日 11:35
0 0

dabing013 写道
ret = stmt.executeUpdate(sql);

改为res = stmt.executeUpdate(sql); 试试


难道还要试么?

感觉你自己才需要试

枫叶29 写道

stmt = conn.createStatement();
sql = "select * from a";
ret = stmt.executeUpdate(sql); 

java.sql.SQLException: Io 异常: Got minus one from a read call

2009年4月14日 20:04
0 0

rs = stmt.execute(sql);或者 rs = stmt.executeQuery(sql);
正解!!!

2009年4月14日 17:38
0 0

查询需要用executeQuery方法

2009年4月14日 17:19
0 0

这种错误 真的不应该犯   更不应该问  相信自己的能够解决

2009年4月14日 16:50
0 0

我感觉应该用executeQuery方法,返回一个结果集,executeUpdate(sql)用于更新操作.

2009年4月14日 16:07
0 0

executeUpdate(sql)用于更新操作

2009年4月14日 15:16
0 0

这是查询语句。。。不能用executeUpdate(sql)的。。。

2009年4月14日 14:46
0 0

rs = stmt.execute(sql);或者 rs = stmt.executeQuery(sql);

正解

2009年4月14日 14:39
0 0

程序的错误大家都指出来了,这样的错误怎么能犯呢。
rs = stmt.execute(sql);或者 rs = stmt.executeQuery(sql);

2009年4月14日 13:29
0 0

Got minus one from a read call

返回一个负数怎么可以啊

res=stmt.executeQuery(sql);



祝你成功

2009年4月14日 11:39
0 0

你用的Select语句,只是查询,根本都没有update,所以用下面是对的
ret = stmt.executeQuery(sql);

2009年4月14日 11:22
0 0

jdbc连接有三种通道方式:
   状态通道:statement
   预通道:prepareStatement
   过程通道:prepareCall
你用statement.executeUpdate()方法只对修改过的对象有效比如新增、修改、删除
而查询可以有2种
1是  statement.executeQuery(sql)
2是  statement.execute(sql); 这种对查询、新增、修改、删除都有效

2009年4月14日 10:05
0 0

1、ret = stmt.executeUpdate(sql); 改成ret = stmt.execute(sql)返回值为boolean,或者ret=stmt.executeQuery(sql)返回值为结果集
2、却认orcal的端口是8086,默认是1521

2009年4月14日 09:33
0 0

好多年不写这样的了,都忘了。

2009年4月14日 09:12
0 0

查询需要用executeQuery方法

2009年4月14日 09:02
0 0


stmt = conn.createStatement();
sql = "select * from a";
//这是查询语句,怎么会用update
//ret = stmt.executeUpdate(sql);

ret = stmt.executeQuery(sql);


读读api文档

int executeUpdate(String sql)
                  throws SQLException执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。

参数:
sql - SQL INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句
返回:
INSERT、UPDATE 或 DELETE 语句的行计数;或者 0,表示不返回任何内容的 SQL 语句


executeQuery
ResultSet executeQuery(String sql)
                       throws SQLException执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

参数:
sql - 要发送给数据库的 SQL 语句,通常为静态 SQL SELECT 语句
返回:
包含给定查询所生成数据的 ResultSet 对象;永远不能为 null


2009年4月14日 08:25
0 0

ret = stmt.executeUpdate(sql);

改为res = stmt.executeUpdate(sql); 试试

2009年4月14日 02:31

相关推荐

    Java连接Oracle数据库的各种方法

    Java连接Oracle数据库主要依赖于两种方法:JDBC和SQLJ。这两种方法都是Oracle8i及其后续版本中为Java开发者提供的数据库交互方式。 JDBC(Java Database Connectivity)是一种标准的Java API,它允许Java应用程序...

    java连接oracle数据库jar包

    Java连接Oracle数据库主要依赖于JDBC(Java Database Connectivity)技术,这是Java平台中用于与各种数据库进行交互的一套标准API。Oracle公司提供了JDBC驱动,使得Java程序能够方便地访问Oracle数据库。在Java中...

    java连接oracle数据库驱动

    java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle数据库驱动器java连接oracle...

    java连接oracle数据库

    ### 使用Java连接Oracle数据库 #### 一、简介与准备工作 在进行Java程序开发时,经常需要与数据库进行交互。Oracle数据库作为业界广泛使用的数据库之一,掌握如何使用Java连接Oracle数据库是一项重要的技能。本文...

    java连接oracle数据库代码

    java连接oracle数据库代码

    Java连接oracle数据库实现成绩查询

    总的来说,这个Java连接Oracle数据库实现成绩查询的课程设计涵盖了数据库设计、JDBC编程、面向对象设计、权限控制等多个IT领域的知识,是学习和实践数据库应用开发的良好实例。通过这个项目,开发者不仅能提升数据库...

    Java连接Oracle数据库的各种方法.doc

    本文主要探讨的是Java连接Oracle数据库的方法,包括JDBC和SQLJ,以及Oracle JDBC驱动的三种类型。 首先,Java与Oracle的接口使得在数据库中运行Java成为可能。Oracle8i引入了这一特性,允许开发者在应用程序中利用...

    java连接oracle数据库实例及所需jar文件

    本实例将详细介绍如何使用Java连接Oracle数据库,并提供所需的jar文件——`classes14.jar`。 首先,为了在Java中与Oracle数据库建立连接,我们需要引入Oracle的JDBC驱动程序。`classes14.jar`就是Oracle JDBC驱动的...

    JAVA 连接oracle数据库工程

    本项目“JAVA 连接oracle数据库工程”将详细阐述如何使用Java在MyEclipse环境下连接到Oracle数据库。 首先,我们需要理解Java与Oracle数据库之间的连接基础。Java通过JDBC(Java Database Connectivity)API与各种...

    JAVA 使用数据库连接池连接Oracle数据库全代码

    ### JAVA 使用数据库连接池连接Oracle数据库全代码解析 #### 一、概述 本文将详细介绍如何在Java项目中使用Apache DBCP(Database Connection Pool)来连接Oracle数据库,并提供完整的示例代码。通过这种方式,我们...

    Java连接Oracle数据库驱动包(JDBC)

    Java连接Oracle数据库的过程中,JDBC(Java Database Connectivity)扮演了至关重要的角色。JDBC是Java平台的一个标准API,它允许Java程序与各种数据库进行交互,包括Oracle。在本压缩包中,提供了Java连接Oracle...

    JAVA 连接oracle数据库 实现简单的查询

    在Java编程中,连接Oracle数据库并执行...总的来说,Java连接Oracle数据库并进行查询涉及到JDBC API的使用,包括加载驱动、建立连接、执行SQL和处理结果。理解这些步骤和概念对于任何Java开发者来说都是基础且重要的。

    java连接oracle数据库jar包ojdbc8

    总结来说,ojdbc8.jar是Java连接Oracle数据库的关键组件,配合正确的配置和使用,可以实现高效、稳定的数据库操作。同时,考虑到字符集支持,`orai18n.jar`也可能成为项目中的重要部分,特别是处理多语言数据时。...

    java使用jdbc连接oracle数据库

    Java使用JDBC(Java Database Connectivity)来连接Oracle数据库是一个常见的任务,它允许Java应用程序与各种数据库进行交互。在本场景中,`ojdbc6.jar`是Oracle提供的JDBC驱动程序,用于建立Java应用程序与Oracle...

    JAVA连接Oracle数据库需要用到的jar文件

    本文将详细介绍如何使用Java连接Oracle数据库以及所需的JAR文件。 首先,Oracle提供了两种类型的JDBC驱动程序: 1. ** Thin Driver (纯Java驱动)**:也称为类型4驱动,它是一个完全用Java编写的轻量级驱动,不需要...

    java连接oracle数据库方法及测试

    java连接oracle数据库方法及测试,本人自己编写的简单方法适合于初学者!!

    java连接oracle数据库的驱动包

    本文将深入探讨如何使用Java连接Oracle数据库,以及如何处理所需的驱动包。 首先,Java Database Connectivity (JDBC) 是Java平台的标准API,用于与各种数据库进行通信。它为开发人员提供了一组接口和类,通过这些...

    Java连接Oracle数据库驱动(各种版本)

    Java classes when using the JDBC Thin and OCI client-side driver - with Java 7.0 VM. ojdbc6.jar Java classes when using the JDBC Thin and OCI client-side driver - with Java 6.0 VM. ojdbc5.jar Java ...

    如何连接oracle数据库及故障解决办法

    首先,在连接 Oracle 数据库之前,需要在客户端机器上安装 Oracle 的客户端软件,唯一的例外就是 Java 连接数据库的时候,可以用 JDBC thin 模式,不用装 Oracle 的客户端软件。如果你已经安装了 Oracle 数据库,...

    java连接Oracle数据库jar文件

    本文将详细介绍如何使用Java连接Oracle数据库,以及涉及的关键jar文件。 首先,Oracle的JDBC驱动分为两种类型: Thin驱动 和 Thick驱动。"Thin"驱动是一个纯Java实现,不依赖于Oracle客户端,而"Thick"驱动则需要...

Global site tag (gtag.js) - Google Analytics