jdbc访问oracle问题

pennate 2002-04-04 05:06:23
加精
在jsp中利用jdbc访问oracle 数据库时,出现下列问题,诚征解决办法:

环境:tomcat3.2+oracle jdbc+oracle8.1.5
CLASS_PATH设置:F:\Oracle\Ora81\jdbc\lib\classes111.zip;F:\Oracle\Ora81\jdbc\lib\nls_chaset11.zip
以上设置参照了F:\Oracle\Ora81\jdbc\readme.txt

使用tnsping和sqlplus访问均正确。

输出信息:
oracle8i.jdbc测试!
SQLException:SO Exception was generated SQLSite:null VendorError:0

源文件:
<%@ page contentType="text/html;charset=gb2312" %>
<%@page import="java.sql.*"%>


<%
out.println("oracle8i.jdbc测试!<br>");
try
{
//Class.forName("oracle.jdbc.Driver");
Class.forName("oracle.jdbc.driver.OracleDriver");
//DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver ());


}
catch(Exception e)
{
out.println("unable to load Driver.");
}

String url="jdbc:oracle:thin:@oradb";
try
{
Connection conn=DriverManager.getConnection(url,"suyk","pennate");
conn.setAutoCommit(false);

//Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select id,name from class");

out.println("<table border=1>");
while(rs.next())
{
out.println("<tr><td>");
out.println(rs.getString("id"));
out.println("</td>");
out.println("<td>");
out.print(rs.getString("name"));
out.println("</td></tr>");
}
out.println("</table>");

rs.close();
stmt.close();
conn.close();
}
catch (SQLException e)
{ out.println("SQLException:"+e.getMessage());
out.println("SQLSite:"+e.getSQLState());
out.println("VendorError:"+e.getErrorCode());
}

%>

如改为url="jdbc:oracle:oci8:@oradb";
则错误如下:
java.lang.IllegalStateException: Response has already been committed
at org.apache.tomcat.core.HttpServletResponseFacade.sendError(HttpServletResponseFacade.java:157)
at org.apache.jasper.runtime.JspServlet.unknownException(JspServlet.java:299)
......
...全文
460 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tr100 2002-06-08
  • 打赏
  • 举报
回复
为什么我这样设也不对呢
环境:tomcat3.2+oracle jdbc+oracle8.1.5
CLASS_PATH设置:F:\Oracle\Ora81\jdbc\lib\classes111.zip;F:\Oracle\Ora81\jdbc\lib\nls_chaset11.zip
还是
Package oracle.jdbc.driver not found in import.
pennate 2002-04-16
  • 打赏
  • 举报
回复
好象没人来了。散分。。。。
论功行赏,决不失言
pennate 2002-04-10
  • 打赏
  • 举报
回复
xmvigour(微电) 能否给个例子
yanchang 2002-04-08
  • 打赏
  • 举报
回复
是的classes111.zip只支持jdbc1.0

jdbc:oracle:thin:@192.168.12.54:1521:oradb

是规定的URL格式啊
pennate 2002-04-08
  • 打赏
  • 举报
回复
用jdbc:oracle:thin:@192.168.12.54:1521:oradb方式可以解决此问题
原来是我记错了SID
用classes111.zip和classes12.zip都可以
好象classes111.zip只支持jdbc1.0
classes12.zip支持jdbc2.0

但是最初用jdbc:oracle:thin@oradb为何不行呢
tnsping oradb
sqlplus oradb
都可以呀
xmvigour 2002-04-08
  • 打赏
  • 举报
回复
jdbc:oracle:thin:@192.168.12.54:1521:oradb
方式将连接绑定到固定的IP地址或主机名上,如果发生IP地址或主机名变更的情况会增加系统移植的复杂性。

用一db.properties来存储ip,port,sid,如果系统变化,改动该db.properties文件即可!
pennate 2002-04-08
  • 打赏
  • 举报
回复
回yanchang(笨笨)
jdbc:oracle:thin:@192.168.12.54:1521:oradb
方式将连接绑定到固定的IP地址或主机名上,如果发生IP地址或主机名变更的情况会增加系统移植的复杂性。在这方面oracle提供了很好的解决办法:
别名服务:
1在web服务器做oracle服务的别名。ip,port,sid包含在web服务器的[ORACLE_HOME]的TnsNames.ora文件中
2。命名服务:在命名服务器上将服务映射为url如aa.test.com
当发生IP地址或主机名变更时,调整服务别名或命名服务设置即可。是一种比较灵活的解决方案。
不知Jsp环境下怎么却实现不了。
jdbc:oracle:thin:@192.168.12.54:1521:oradb
是一种最原始的处理办法,暴露了DB服务的地址。希望大家积极发言

xmvigour 2002-04-08
  • 打赏
  • 举报
回复
classes12.zip是oci格式的
fgcsh 2002-04-08
  • 打赏
  • 举报
回复
classes12.zip支持jdbc2.0
那我为什么不能使用游标?
jinfanzi 2002-04-06
  • 打赏
  • 举报
回复
你需要将classes111.zip或classes12.zip解压后,将其中的oracle文件夹copy到你的web服务器下的相应路径下(如/weblogic/classes/),并在classpath中注册,如:d:/weblogic/classes;
zhu_liping 2002-04-05
  • 打赏
  • 举报
回复
String url="jdbc:oracle:thin:@192.168.12.54:1521:oradb";
con=DriverManager.getConnection(url,"user","passwd");
pennate 2002-04-05
  • 打赏
  • 举报
回复
我下载了classes12.zip错误依旧
补充一下:
我的java环境是jdk1.3
当用jdbc:oracle:thin:@192.168.12.54:1521:oradb方式连接时报错如下
SQLException:Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135286784)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
pennate 2002-04-05
  • 打赏
  • 举报
回复
我下载了classes12zip 错误依据
补充一下
用url="jdbc:oracle:thin:@192.168.12.54:1521:oradb" 方式连接时错误如下
SQLException:Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135286784)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))
快救命呀
icystone 2002-04-05
  • 打赏
  • 举报
回复
(ERR=12505)無效的SID.注意1251後面加的是SID爾不是數據庫的名字

liangxf0022 2002-04-05
  • 打赏
  • 举报
回复
同意zhu_liping(zz),obi8必须安装oracle的客户端,而且是8.1.5以上版本的。
zhu_liping 2002-04-04
  • 打赏
  • 举报
回复
classes111.zip换成classes12.zip吧,ORACLE网站有去下一个吧!
Oracle官方11g 最新版jdbc驱动。 新特性:   1、支持JDK6,支持JDBC 4.0,新的java.sql.SQLXML类型没有被支持,是使用ojdbc6.jar来支持。J2SE 5.0 和 JDBC 3.0 全面支持使用ojdbc5.jar。   2.不再支持oracle.jdbc.driver。从9.0.1开始的每个release都推荐使用oracle.jdbc。这一天终于到来,在11g中,引用oracle.jdbc.driver不再通过编译。   3.j2se 1.2,1.3,1.4不再支持。11R1不再包括这些版本的jar和zip,如果仍然使用这些版本,可以继续使用10gR2的jdbc。   4.11gR1 Thin driver支持AES加密算法,SHA1 hash算法,RADIUS, KERBEROS,SSL认证机制.   5.支持ANYDATE和ANYTYPE类型。这两种类型自9i引入,11R1前,程序员只能通过PL/SQL操作。   6.高级队列支持。11R1提供了访问AQ的高性能接口。   7.支持数据库变更通知。   8.Thin和OCI的数据库启动和关闭。11R1提供了这样的方法来启动和关闭数据库。   9.新的工厂方法。Oracle JDBC 11R1 oracle.jdbc.OracleConnection提供了创建Oracle对象的工厂方法。   包括ARRAY, BFILE, DATE, INTERVALDS, NUMBER, STRUCT, TIME,TIMESTAMP,TIMESTAMP等。   ojdbc5.jar: 适用于jdk5   ojdbc6.jar: 适用于jdk6   ***_g.jar 只是用javac -g编译,生成所有调试信息,其它全一样   ---------------------------------------------------   总体讲新版本的JDBC驱动 性能强、很多bug被发现并已解决。   我遇到的,之前使用ojdbc14.jar(不记得哪个版本了)批量插入10万条,实际只插入了3万多条,其它的丢失了,换ojdbc6.jar后,一次commit批量插入100万条也OK了。   尽量使用和数据库版本一致的驱动,有bug时,换高版本的JDBC驱动试试 。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧