標籤:cut .exe oid 資源 資料 而不是 prepare 資料庫名 rom
1. 需要oracle的 odbc jar包
2. 代碼
3. 注意:ps對象和statement對象最好用完立即釋放,尤其是讀寫資料庫代碼出現在 for 迴圈語句中時。
否則會出現遊標不夠的情況,超出遊標最大數等遊標錯誤!
4. 案例:我在將Excel匯入到Oracle資料庫中時,由於搜尋網上代碼,未深刻領會。在遍曆Excel的每一行資料時,都執行
pre = con.prepareStatement(sql) 。直到Excel中的5000行資料遍曆完後才 執行 pre.close(); ,結果報錯,出現
超出遊標錯誤!後來更正為在 for 迴圈內部,執行完 pre.executeQuery(); 緊接著,立即執行 pre.close(); (當然關閉前還要有
個 pre 判空的判斷語句)。更正後,一次順利匯入5000條資料。
1 public void testOracle() 2 { 3 Connection con = null;// 建立一個資料庫連接 4 PreparedStatement pre = null;// 建立先行編譯語句對象,一般都是用這個而不用Statement 5 ResultSet result = null;// 建立一個結果集對象 6 try 7 { 8 Class.forName("oracle.jdbc.driver.OracleDriver");// 載入Oracle驅動程式 9 System.out.println("開始嘗試串連資料庫!");10 String url = "jdbc:oracle:" + "thin:@127.0.0.1:1521:XE";// 127.0.0.1是本機地址,XE是精簡版Oracle的預設資料庫名11 String user = "system";// 使用者名稱,系統預設的賬戶名12 String password = "147";// 你安裝時選設定的密碼13 con = DriverManager.getConnection(url, user, password);// 擷取串連14 System.out.println("串連成功!");15 String sql = "select * from student where name=?";// 先行編譯語句,“?”代表參數16 pre = con.prepareStatement(sql);// 執行個體化先行編譯語句17 pre.setString(1, "劉顯安");// 設定參數,前面的1表示參數的索引,而不是表中列名的索引18 result = pre.executeQuery();// 執行查詢,注意括弧中不需要再加參數19 while (result.next())20 // 當結果集不為空白時21 System.out.println("學號:" + result.getInt("id") + "姓名:"22 + result.getString("name"));23 }24 catch (Exception e)25 {26 e.printStackTrace();27 }28 finally29 {30 try31 {32 // 逐一將上面的幾個對象關閉,因為不關閉的話會影響效能、並且佔用資源33 // 注意關閉的順序,最後使用的最先關閉34 if (result != null)35 result.close();36 if (pre != null)37 pre.close();38 if (con != null)39 con.close();40 System.out.println("資料庫連接已關閉!");41 }42 catch (Exception e)43 {44 e.printStackTrace();45 }46 }47 }
Java代碼工具箱之連結Oracle