龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

Oracle异常访问的实际操作方案

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
以下的文章主要介绍的是如何使用Java通过JDBC来访问 Oracle 异常,我们都知道Java通过JDBC访问Oracle异常经常出现的在实际的运行中带来很多的不便,以下的文章就是介绍Oracle 字符集乱码的

以下的文章主要介绍的是如何使用Java通过JDBC来访问Oracle异常,我们都知道Java通过JDBC访问Oracle异常经常出现的在实际的运行中带来很多的不便,以下的文章就是介绍Oracle 字符集乱码的解决方案。

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

  1. Exception in thread "main" java.sql.SQLException: ORA-00600:  

内部错误代码,参数:

  1. [ttcgcshnd-1], [0], [], [], [], [], [], [] 

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

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

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

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

表结构

  1. create table test(  
  2. name char(32),  
  3. addr varchar(3000)   

varchar2也一样

)

解决办法: 采用setCharacterStream

  1. import java.sql.*;  
  2. import java.io.*;  
  3. import java.util.*;  
  4. /**  

Oracle测试

  1. * @author kingfish  
  2. * @version 1.0  
  3. */  
  4. public class TestOra {  
  5. public static void testORACLE() {  
  6. String url = "jdbc:oracle:thin:@localhost:1521:oradb";  
  7. String username = "system";  
  8. String password = "manager";  
  9. Connection conn = null;  
  10. try {  
  11. Class.forName("oracle.jdbc.driver.OracleDriver");  
  12. conn = DriverManager.getConnection(url, username, password);  
  13. }  
  14. catch (Exception e) {  
  15. e.printStackTrace();  
  16. return;  
  17. }  
  18. char[] carray = new char[1000];  
  19. Arrays.fill(carray, ′我′);  
  20. String s = new String(carray);  
  21. try {  
  22. PreparedStatement pst = conn.prepareStatement(  
  23. "insert into test(name,addr) values(?,?)");  
  24. pst.setString(1, "kingfish");  
  25. pst.setCharacterStream(2,  
  26. new InputStreamReader(new ByteArrayInputStream(s.  
  27. getBytes())), s.length());  
  28. pst.setString(2,s);   

用此句则Oracle异常

  1. pst.execute();  
  2. Statement st = conn.createStatement();  
  3. ResultSet r = st.executeQuery("SELECT * from test");  
  4. while (r.next()) {  
  5. s = r.getString(2);  
  6. System.out.println("len=" + s.length());  
  7. System.out.println("value=" + s);  
  8. }  
  9. r.close();  
  10. st.close();  
  11. conn.close();  
  12. }  
  13. catch (Exception e) {  
  14. e.printStackTrace();  
  15. }  
  16. }  
  17. /**  

测试

  1. * @param args String[]  
  2. */  
  3. public static void main(String[] args) {  
  4. testORACLE();  
  5. }  

以上的相关内容就是对如何使用Java通过JDBC来访问Oracle异常的介绍,望你能有所收获。

文章出自: http://www.programbbs.com/doc/class10-1.htm

精彩图集

赞助商链接