网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.体验流调试的威力.
.Java十年有成——谈J2ME的发展历.
.程序分享:从UDDI注册中心查询服.
.Java SE 6 Beta&.
.JBuilder 9 常见快捷键.
.使用BMT消息驱动BEAN和SPRING进行.
.两种方法定位Java应用程序瓶颈(2).
.JAVA基础知识:JAVA变量类型之间.
.JDBCTM 指南:入门7 - CallableS.
.如何使用Java编写NT服务.
.下溯造型与运行期类型标识.
.Struts生成Word下载.
.浅议Web服务.
.java日记:学习java一年体会4.
.用JBoss Eclipse IDE开发J2EE应用.
.Java 基本语法(五)——控制流程.
.Java技术与XML常见问题之JAXB.
.端口扫描程序java实现.
.SQL server中可支持Web的分析功能.
.利用Java1.1实现zip方式的压缩/解.

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

发表日期:2008-1-5



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
上一篇:java图像浏览器 人气:873
下一篇:JAVA文件加密器(收藏) 人气:1372
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐