转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> ORACLE >> 正文
java通过JDBC访问Oracle的2个异常         ★★★★

java通过JDBC访问Oracle的2个异常

作者:闵涛 文章来源:闵涛的学习笔记 点击数:910 更新时间:2009/4/22 22:03:06

1.  连接非常慢, 连接成功后执行select操作出现异常:

   Exception in thread "main" java.sql.SQLException: ORA-00600: 内部错误代码,参数: [ttcgcshnd-1], [0], [], [], [], [], [], []
 

   解决: 使用oracle安装目录下的jdbc\lib\classes12.jar后正常.

2. 使用PreparedStatement的setString(i, s)时出现:

可以参考帖子:http://community.csdn.net/Expert/topic/3936/3936672.xml?temp=.2879145

 java.sql.SQLException: 数据大小超出此类型的最大值: 3000

后面那个值大小不定,  感觉与s大小有关

表结构

create table test(

name char(32),

addr   varchar(3000)                       //varchar2也一样

)

解决办法: 采用setCharacterStream


import java.sql.*;
import java.io.*;
import java.util.*;

/**
 * oracle测试
 * @author kingfish
 * @version 1.0
 */
public class TestOra {
  public static void testORACLE() {
    String url = "jdbc:oracle:thin:@localhost:1521:oradb";
    String username = "system";
    String password = "manager";

    Connection conn = null;
    try {
      Class.forName("oracle.jdbc.driver.OracleDriver");
      conn = DriverManager.getConnection(url, username, password);
    }
    catch (Exception e) {
      e.printStackTrace();
      return;
    }

    char[] carray = new char[1000];
    Arrays.fill(carray, ''''我'''');
    String s = new String(carray);
    try {
      PreparedStatement pst = conn.prepareStatement(
          "insert into test(name,addr) values(?,?)");
      pst.setString(1, "kingfish");

      pst.setCharacterStream(2,
                             new InputStreamReader(new ByteArrayInputStream(s.
          getBytes())), s.length());

      //pst.setString(2,s);  //用此句则异常
      pst.execute();

      Statement st = conn.createStatement();
      ResultSet r = st.executeQuery("SELECT * from test");

      while (r.next()) {
        s = r.getString(2);
        System.out.println("len=" + s.length());
        System.out.println("value=" + s);
      }

      r.close();
      st.close();
      conn.close();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * 测试
   * @param args String[]
   */
  public static void main(String[] args) {
    testORACLE();
  }
}


说明: 引起此问题的原因估计和OraclePreparedStatement中的setString的实现有关.

kingfish

2005.4.14


[系统软件]EXP-00008: ORACLE error 904 encountered的解决方…  [常用软件]PB7 连接 Oracle 的配置方法
[C语言系列]SQLServer2000 JDBC驱动的完整安装及测试说明  [C语言系列]慎用或尽量不要用微软自带的sqlserver的jdbc驱动
[C语言系列]如何在Jbuilder9中使用SQLServer JDBC驱动  [Web开发]oracle Export and Import 简介
[Web开发]关于未能找到存储过程 master..xp_jdbc_open  [Web开发]JDBC 3.0 RowSet, 类似于windows中ADO的编程方式
[Web开发]ADO访问Oracle结果集的心得  [JAVA开发]JDBC 4.0规范之目标
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台