程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle異常訪問的實際操作方案

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異常的介紹,望你能有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved