赛迪网 > IT技术 Java > Java大图列表
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

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

发布时间:2007.10.31 09:10     来源:赛迪网技术社区    作者:baocl

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();
  }
}


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Struts中不同的Action和ActionForm组合 (10-30) · JAVA基础:javascript如何访问jsf组件 (10-30)
· JAVA基础:jsp处理表单的一些经验分享 (10-30) · solaris上开发J2EE应用中文问题的解决 (10-30)
· J2EE基础:j2ee所包含的13种核心技术 (10-30) · JAVA基础:关于bean-to-bean mapping (10-30)
· spring 2.0自定义xml 标记 (二 如何实现) (10-30) · spring 2.0自定义xml 标记 (一 相关类) (10-30)
· 使用JMX监控应用程序内、外部的状况 (10-30) · 关于Java分布式事务处理的问题 (10-30)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 推动产业升级 沪年内首推电子商务地方法规
· 中国域名成为全球顶级域名 促进社会信息化
· 签合同前的四问 谈八大厂商“云计算”理念
· 亚略特烟草解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统