Jika Anda ingin menggunakan koneksi JDBC ke database, Anda harus menginstal driver JDBC terlebih dahulu. Pengiriman PL4x tidak mengandung driver JDBC. Anda harus mengunduh sendiri setiap driver yang diperlukan dan menerima perjanjian lisensi. Untuk menginstal driver JDBC untuk PL4x, ikuti petunjuk ini
Unduh driver JDBC atau temukan di instalasi basis data. Berikut adalah beberapa URL unduhan untuk driver JDBC umum
Salin file jar driver JDBC ke direktori /lib/modules
Driver JDBC Anda sekarang dapat digunakan dari pemetaan PL4x dan skrip pengujian
Saya hanya memiliki akses pengembang PI sehingga driver JDBC harus diinstal oleh administrator. Jadi pertanyaan saya adalah apakah kami memiliki cara mudah untuk memeriksa apakah driver JDBC sudah terinstal dengan benar dengan mempertimbangkan batasan otorisasi saya?
Di adaptor penerima JDBC saya menggunakan oracle. jdbc. sopir. OracleDriver sebagai parameter Driver JDBC
Kesalahan yang saya miliki dalam pemantauan SAP PI untuk adaptor JDBC
Tidak dapat membuat sumber daya gabungan baru. DriverManagerException. Tidak dapat membuat koneksi dengan driver terdaftar. peramal. jdbc. sopir. OracleDriver kembali. peramal. jdbc. sopir. OracleDriver. . ClassNotFoundException. peramal. jdbc. sopir. OracleDriver
Bab ini membahas kompatibilitas versi driver Oracle Java Database Connectivity (JDBC), versi database, dan versi Java Development Kit (JDK). Ini juga menjelaskan dasar-dasar pengujian instalasi dan konfigurasi klien dan menjalankan aplikasi sederhana. Bab ini berisi bagian-bagian berikut
Kompatibilitas Versi untuk Driver Oracle JDBC
Bagian ini membahas masalah kompatibilitas versi JDBC umum
Kompatibilitas terbalik
Driver JDBC disertifikasi untuk bekerja dengan versi Oracle Database yang saat ini didukung. Misalnya, driver JDBC Thin di Oracle Database 11g Release 2 (11. 2) disertifikasi untuk bekerja dengan 10. 2. x, 10. 1. x, 9. 2. x, dan 9. 0. 1. x rilis Oracle Database. Namun, mereka tidak disertifikasi untuk bekerja dengan rilis database lama yang tidak didukung, seperti 8. 0. x dan 7. x
Kompatibilitas Maju
Driver JDBC yang ada dan didukung disertifikasi untuk bekerja dengan Oracle Database 11g Rilis 2 (11. 2)
Verifikasi Instalasi Klien JDBC
Untuk memverifikasi penginstalan klien JDBC, Anda harus melakukan semua hal berikut
Pemasangan driver Oracle JDBC bersifat khusus platform. Ikuti petunjuk penginstalan untuk driver yang ingin Anda instal di dokumentasi khusus platform Anda
Bagian ini menjelaskan langkah-langkah untuk memverifikasi penginstalan driver JDBC klien Oracle, dengan asumsi bahwa Anda telah menginstal driver pilihan Anda
Jika Anda telah menginstal driver JDBC Thin, maka tidak diperlukan instalasi lebih lanjut di komputer klien
Catatan
Driver JDBC Thin memerlukan pendengar TCP/IP untuk berjalan di komputer tempat database diinstalJika Anda telah menginstal driver JDBC Oracle Call Interface (OCI), maka Anda juga harus menginstal perangkat lunak klien Oracle. Ini termasuk Oracle Net dan perpustakaan OCI
Periksa Direktori dan File yang Diinstal
Menginstal produk Oracle Java membuat, antara lain, direktori berikut
CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 4
CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3 CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 6
Periksa apakah direktori dan file berikut telah dibuat dan diisi di direktori CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 4
CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; _9
Direktori ini berisi file terkompresi, javac java 0 atau javac java 1. Saat Anda membuka kompresi file terkompresi ini, direktori javac java 2 dan file javac java 3 dibuat. Direktori javac java _2 berisi contoh program, termasuk contoh cara menggunakan sintaks escape JDBC dan sintaks Oracle SQL, blok PL/SQL, stream, tipe yang ditentukan pengguna, ekstensi tipe Oracle tambahan, dan ekstensi kinerja Oracle
javac java 5
Direktori ini berisi file javac java 6, yang merupakan dokumentasi antarmuka pemrograman aplikasi (API) Oracle JDBC
javac java 7
Direktori javac java _7 berisi kelas Java yang diperlukan berikut ini
javac java 9 dan import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 0
Berisi kelas untuk globalisasi dan dukungan set karakter multibyte
import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 1, import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 2, import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 3, dan import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 4
Berisi kelas driver JDBC untuk digunakan dengan JDK 1. 5 dan JDK 1. 6
Catatan
Sejak Oracle Database 11g Rilis 1 (11. 1), dukungan untuk versi JDK lebih awal dari versi 1. 5 telah dihapus. Selain itu, file import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 5 dan import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 6 tidak lagi dikirimkan. Sebagai gantinya, Anda dapat menggunakan file import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } _1 dan import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 3, yang disertakan dengan Oracle Database 11g
Jika Anda menggunakan JSE 6 dan yang lebih baru, maka tidak perlu memuat driver JDBC secara eksplisit. Ini berarti Java run-time memuat driver saat dibutuhkan dan Anda tidak perlu menyertakan import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } } 9 atau /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 0 dalam kode Anda. Tetapi jika Anda menggunakan J2SE 5. 0, maka Anda perlu memuat driver JDBC secara eksplisit
/* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } _1
File ini berisi informasi terkini dan rilis khusus tentang driver, yang mungkin tidak disertakan dalam dokumentasi lain pada produk
Periksa apakah direktori berikut telah dibuat dan diisi di direktori CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3 CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 6
/* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 4 dan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 5
File-file ini berisi kelas untuk Java Transaction API (JTA) dan Java Naming and Directory Interface (JNDI). Ini diperlukan hanya jika Anda menggunakan fitur JTA untuk manajemen transaksi terdistribusi atau fitur JNDI untuk layanan penamaan
Catatan
File-file ini juga dapat diperoleh dari situs Web Sun Microsystems. Namun, Anda disarankan untuk menggunakan versi yang disediakan oleh Oracle, yang telah diuji dengan driver Oracle/* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } _6
File JAR ini berisi kelas untuk Layanan Notifikasi Oracle. File ini diperlukan jika Anda menggunakan Pemberitahuan Aplikasi Cepat (FAN) untuk memberi tahu proses lain tentang konfigurasi dan informasi tingkat layanan
Periksa Variabel Lingkungan
Bagian ini menjelaskan variabel lingkungan yang harus diatur untuk driver JDBC OCI dan driver JDBC Thin, dengan fokus pada platform Sun Solaris, Linux, dan Microsoft Windows
Anda harus menyetel variabel lingkungan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } _7 untuk driver JDBC OCI atau Thin yang terinstal. Sertakan yang berikut ini dalam variabel lingkungan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } _7
ORACLE_HOME/jdbc/lib/ojdbc5.jar ORACLE_HOME/jlib/orai18n.jarCatatan
Jika Anda menggunakan fitur JTA dan fitur JNDI, maka Anda harus menentukan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 4 dan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 5 dalam variabel lingkungan /* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } } 7 AndaPengemudi JDBC OCI
Jika Anda menginstal driver JDBC OCI, Anda juga harus menetapkan nilai berikut untuk variabel lingkungan path library
Di Sun Solaris atau Linux, atur variabel lingkungan ________40______2 sebagai berikut
ORACLE_HOME/libDirektori ini berisi pustaka objek bersama OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password); _3
Catatan
Jika Anda menjalankan Java Virtual Machine (JVM) 32-bit terhadap klien atau database 64-bit, maka Anda juga harus menambahkan CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password); 5 ke OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password); 6Di Microsoft Windows, atur variabel lingkungan ________40______7 sebagai berikut
ORACLE_HOME\binDirektori ini berisi pustaka tautan dinamis OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password); _8
Semua program demonstrasi JDBC OCI dapat dijalankan dalam mode Klien Instan dengan menyertakan pustaka bersama data Klien Instan JDBC OCI pada variabel lingkungan jalur pustaka
Driver Tipis JDBC
Jika Anda menginstal driver JDBC Thin, Anda tidak perlu mengatur variabel lingkungan lainnya. Namun, untuk menggunakan driver Thin sisi server JDBC, Anda perlu mengatur izin
Mengatur Izin untuk Driver Tipis Sisi Server
Driver Thin sisi server JDBC membuka soket untuk koneksinya ke database. Karena Oracle Database memberlakukan model keamanan Java, pemeriksaan dilakukan untuk objek OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password); 9
Untuk menggunakan driver Thin sisi server JDBC, pengguna yang terhubung harus diberikan izin yang sesuai. Berikut adalah contoh bagaimana izin dapat diberikan untuk pengguna OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 0
CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT;Perhatikan bahwa OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 1 di OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 2 panggilan harus dalam huruf besar. Tanda bintang (OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); _3) adalah sebuah pola. Anda dapat membatasi pengguna dengan memberikan izin untuk terhubung hanya ke komputer atau port tertentu
Pastikan Kode Java Dapat Dikompilasi dan Dijalankan
Untuk memastikan lebih lanjut bahwa Java telah diatur dengan benar di sistem klien Anda, buka direktori javac java 2 di bawah direktori CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 3OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 6. Sekarang, ketikkan perintah berikut pada baris perintah, satu demi satu, untuk melihat apakah kompiler Java dan juru bahasa Java berjalan tanpa kesalahan
javac javaSetiap perintah sebelumnya harus menampilkan daftar opsi dan parameter lalu keluar. Idealnya, pastikan Anda dapat mengkompilasi dan menjalankan program uji sederhana, seperti OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 7
Tentukan Versi Driver JDBC
Anda dapat menentukan versi driver JDBC yang Anda instal, dengan memanggil metode OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 8 dari kelas OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 9
Kode contoh berikut menunjukkan cara menentukan versi driver
import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; class JDBCVersion { public static void main (String args[]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:scott/tiger@::"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } }Anda juga dapat menentukan versi driver JDBC dengan menjalankan perintah berikut
String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 0
String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 1
Uji JDBC dan Koneksi Database
Direktori javac java _2 berisi contoh program untuk driver Oracle JDBC tertentu. Salah satu program, String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 3, dirancang untuk menguji JDBC dan koneksi database. Program menanyakan nama pengguna, kata sandi, dan nama database yang ingin Anda sambungkan. Program terhubung ke database, meminta string "String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 4", dan mencetaknya ke layar
Pergi ke direktori javac java 2, dan kompilasi dan jalankan program String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 3. Jika hasil kueri dicetak tanpa error, berarti instalasi Java dan JDBC Anda sudah benar
Meskipun String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 3 adalah program sederhana, ini menunjukkan beberapa fungsi penting dengan melakukan hal berikut
Mengimpor kelas Java yang diperlukan, termasuk kelas JDBC
Membuat instance String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); 8
Menghubungkan ke database
Menjalankan kueri sederhana
Mencetak hasil kueri ke layar Anda
Program String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection(); _3, yang menggunakan driver JDBC OCI, adalah sebagai berikut
/* * This sample can be used to check the JDBC installation. * Just run it and provide the connect information. It will select * "Hello World" from the database. */ // You need to import the java.sql and JDBC packages to use JDBC import java.sql.*; import oracle.jdbc.*; import oracle.jdbc.pool.OracleDataSource; // We import java.io to be able to read from the command line import java.io.*; class JdbcCheckup { public static void main(String args[]) throws SQLException, IOException { // Prompt the user for connect information System.out.println("Please enter information to test connection to the database"); String user; String password; String database; user = readEntry("user: "); int slash_index = user.indexOf('/'); if (slash_index != -1) { password = user.substring(slash_index + 1); user = user.substring(0, slash_index); } else password = readEntry("password: "); database = readEntry("database(a TNSNAME entry): "); System.out.print("Connecting to the database..."); System.out.flush(); System.out.println("Connecting..."); // Open an OracleDataSource and get a connection OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:oci:@" + database); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("connected."); // Create a statement Statement stmt = conn.createStatement(); // Do the SQL "Hello World" thing ResultSet rset = stmt.executeQuery("select 'Hello World' from dual"); while (rset.next()) System.out.println(rset.getString(1)); // close the result set, the statement and the connection rset.close(); stmt.close(); conn.close(); System.out.println("Your JDBC installation is correct."); } // Utility function to read a line from standard input static String readEntry(String prompt) { try { StringBuffer buffer = new StringBuffer(); System.out.print(prompt); System.out.flush(); int c = System.in.read(); while (c != '\n' && c != -1) { buffer.append((char)c); c = System.in.read(); } return buffer.toString().trim(); } catch(IOException e) { return ""; } } }Langkah Dasar di JDBC
Setelah memverifikasi penginstalan klien JDBC, Anda dapat mulai membuat aplikasi JDBC. Saat menggunakan driver Oracle JDBC, Anda harus menyertakan informasi khusus driver tertentu dalam program Anda. Bagian ini menjelaskan, dalam bentuk tutorial, di mana dan bagaimana cara menambahkan informasi. Tutorial memandu Anda melalui langkah-langkah untuk membuat kode yang terhubung ke dan menanyakan database dari klien
Anda harus menulis kode untuk melakukan tugas-tugas berikut
Catatan
Anda harus memberikan informasi khusus driver Oracle untuk tiga tugas pertama, yang memungkinkan program Anda menggunakan antarmuka pemrograman aplikasi (API) JDBC untuk mengakses database. Untuk tugas lainnya, Anda dapat menggunakan kode Java JDBC standar, seperti yang Anda lakukan untuk aplikasi Java apa punMengimpor Paket
Apa pun driver Oracle JDBC yang Anda gunakan, sertakan pernyataan ORACLE_HOME/lib 00 yang ditampilkan di awal program Anda
Tabel 2-1 Pernyataan Impor untuk Pengemudi JDBC
Pernyataan imporMenyediakanORACLE_HOME/lib _01
Paket JDBC standar
ORACLE_HOME/lib _02
Kelas ORACLE_HOME/lib _03 dan ORACLE_HOME/lib 04. Anda dapat menghilangkan paket ini jika Anda tidak akan menggunakan kelas-kelas ini dalam aplikasi Anda
ORACLE_HOME/lib _05
ORACLE_HOME/lib _06
ORACLE_HOME/lib _07
ekstensi Oracle ke JDBC. Ini opsional
ORACLE_HOME/lib _08
Ekstensi tipe Oracle. Ini opsional
Paket Oracle yang terdaftar sebagai opsional menyediakan akses ke fungsionalitas tambahan yang disediakan oleh driver Oracle JDBC, tetapi tidak diperlukan untuk contoh yang disajikan di bagian ini
Catatan
Lebih baik mengimpor hanya kelas yang dibutuhkan aplikasi Anda, daripada menggunakan tanda bintang wildcard (OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection(); 3). Panduan ini menggunakan tanda bintang (*) untuk kesederhanaan, tetapi ini bukan cara yang disarankan untuk mengimpor kelas dan antarmukaMembuka Koneksi ke Database
Pertama, Anda harus membuat instance ORACLE_HOME/lib 08. Kemudian, buka koneksi ke database menggunakan metode ________41______11. Properti koneksi yang diambil berasal dari instance ORACLE_HOME/lib 08. Jika Anda menyetel properti koneksi URL, maka semua properti lainnya, termasuk ORACLE_HOME/lib 13, ORACLE_HOME/lib 14, ORACLE_HOME/lib 15, ORACLE_HOME/lib 16, ORACLE_HOME/lib 17, ORACLE_HOME/lib 18, dan jenis driver akan diabaikan
Menentukan URL Database, Nama Pengguna, dan Kata Sandi
Kode berikut menetapkan URL, nama pengguna, dan kata sandi untuk sumber data
OracleDataSource ods = new OracleDataSource(); ods.setURL(url); ods.setUser(user); ods.setPassword(password);Contoh berikut menghubungkan pengguna ORACLE_HOME/lib _19 dengan kata sandi ORACLE_HOME/lib 20 ke database dengan layanan ORACLE_HOME/lib 21 melalui port 1521 host ORACLE_HOME/lib 22, menggunakan driver JDBC Thin
OracleDataSource ods = new OracleDataSource(); String url = "jdbc:oracle:thin:@//myhost:1521/orcl", ods.setURL(url); ods.setUser("scott"); ods.setPassword("tiger"); Connection conn = ods.getConnection();Catatan
Nama pengguna dan kata sandi yang ditentukan dalam argumen menimpa nama pengguna dan kata sandi apa pun yang ditentukan dalam URLMenentukan URL Basis Data yang Mencakup Nama Pengguna dan Kata Sandi
Contoh berikut menghubungkan pengguna ORACLE_HOME/lib _19 dengan kata sandi ORACLE_HOME/lib 20 ke host basis data yang entri Substrat Jaringan Transparan (TNS)-nya adalah ORACLE_HOME/lib 25, menggunakan driver JDBC Oracle Call Interface (OCI). Dalam hal ini, URL menyertakan nama pengguna dan kata sandi dan merupakan satu-satunya parameter masukan
String url = "jdbc:oracle:oci:scott/tiger@myTNSEntry"); ods.setURL(url); Connection conn = ods.getConnection();Jika Anda ingin terhubung menggunakan driver Thin, maka Anda harus menentukan nomor port. Misalnya, jika Anda ingin terhubung ke database pada host ORACLE_HOME/lib 22 yang memiliki pendengar TCP/IP pada port 1521 dan pengidentifikasi layanan adalah ORACLE_HOME/lib 21, maka berikan kode berikut
ORACLE_HOME/lib _0Membuat Objek Pernyataan
Setelah Anda terhubung ke database dan, dalam prosesnya, membuat objek ORACLE_HOME/lib 28, langkah selanjutnya adalah membuat objek ORACLE_HOME/lib 29. Metode ORACLE_HOME/lib _30 dari objek JDBC ORACLE_HOME/lib 28 mengembalikan objek dari tipe JDBC ORACLE_HOME/lib 29. Untuk melanjutkan contoh dari bagian sebelumnya, di mana objek ORACLE_HOME/lib 28 ORACLE_HOME/lib 34 dibuat, berikut adalah contoh cara membuat objek ORACLE_HOME/lib 29
ORACLE_HOME/lib _1Menjalankan Kueri dan Mengambil Objek Kumpulan Hasil
Untuk menanyakan database, gunakan metode ORACLE_HOME/lib _36 dari objek ORACLE_HOME/lib 29. Metode ini mengambil pernyataan SQL sebagai input dan mengembalikan objek JDBC ________41______38
Catatan
Metode yang digunakan untuk mengeksekusi objek ORACLE_HOME/lib 29 bergantung pada jenis pernyataan SQL yang dieksekusi. Jika objek ORACLE_HOME/lib 29 mewakili kueri SQL yang mengembalikan objek ________41______38, metode ORACLE_HOME/lib 36 harus digunakan. Jika SQL dikenal sebagai pernyataan DDL atau pernyataan DML yang mengembalikan jumlah pembaruan, metode ORACLE_HOME/lib 43 harus digunakan. Jika jenis pernyataan SQL tidak diketahui, metode ORACLE_HOME/lib 44 harus digunakan
Dalam kasus driver JDBC standar, jika string SQL yang dieksekusi tidak mengembalikan objek ORACLE_HOME/lib 38, maka metode ORACLE_HOME/lib 36 melempar pengecualian ORACLE_HOME/lib 47. Dalam kasus driver Oracle JDBC, metode ORACLE_HOME/lib 36 tidak memunculkan pengecualian ORACLE_HOME/lib 47 bahkan jika string SQL yang dieksekusi tidak mengembalikan objek ORACLE_HOME/lib 38
Untuk melanjutkan contoh, setelah Anda membuat objek ORACLE_HOME/lib _29 ORACLE_HOME/lib 52, langkah selanjutnya adalah menjalankan kueri yang mengembalikan objek ORACLE_HOME/lib 38 dengan isi kolom ORACLE_HOME/lib 54 dari tabel karyawan bernama ORACLE_HOME/lib 55
ORACLE_HOME/lib _2Memproses Objek Kumpulan Hasil
Setelah Anda menjalankan kueri, gunakan metode ORACLE_HOME/lib 56 dari objek ORACLE_HOME/lib 38 untuk beralih melalui hasil. Metode ini menelusuri kumpulan hasil baris demi baris, mendeteksi akhir kumpulan hasil saat tercapai
Untuk menarik data dari rangkaian hasil saat Anda mengulanginya, gunakan metode ORACLE_HOME/lib 58ORACLE_HOME/lib 59 yang sesuai dari objek ORACLE_HOME/lib 38 , di mana ORACLE_HOME/lib 59 sesuai dengan tipe data Java
Misalnya, kode berikut akan mengulang melalui objek ORACLE_HOME/lib 38, ORACLE_HOME/lib 63, dari bagian sebelumnya dan akan mengambil dan mencetak setiap nama karyawan
ORACLE_HOME/lib _3Metode ORACLE_HOME/lib _56 mengembalikan ORACLE_HOME/lib 65 saat mencapai akhir kumpulan hasil. Nama karyawan diwujudkan sebagai nilai Java ORACLE_HOME/lib 66
Menutup Set Hasil dan Objek Pernyataan
Anda harus secara eksplisit menutup objek ORACLE_HOME/lib _38 dan ________41______29 setelah Anda selesai menggunakannya. Ini berlaku untuk semua objek ORACLE_HOME/lib 38 dan ORACLE_HOME/lib 29 yang Anda buat saat menggunakan driver Oracle JDBC. Driver tidak memiliki metode finalizer. Rutinitas pembersihan dilakukan dengan metode ORACLE_HOME/lib 71 dari kelas ORACLE_HOME/lib 38 dan ORACLE_HOME/lib 29. Jika Anda tidak menutup objek ORACLE_HOME/lib _38 dan ORACLE_HOME/lib 29 secara eksplisit, kebocoran memori serius dapat terjadi. Anda juga bisa kehabisan kursor di database. Menutup set hasil dan pernyataan melepaskan kursor yang sesuai di database. Jika Anda hanya menutup kumpulan hasil, maka kursor tidak akan dilepaskan
Misalnya, jika objek ORACLE_HOME/lib 38 Anda adalah ORACLE_HOME/lib 63 dan objek ORACLE_HOME/lib 29 Anda adalah ORACLE_HOME/lib 52, maka tutup kumpulan hasil dan pernyataan dengan baris kode berikut
ORACLE_HOME/lib _4Saat Anda menutup objek ORACLE_HOME/lib _29 yang dibuat oleh objek ORACLE_HOME/lib 28 tertentu, koneksi itu sendiri tetap terbuka
Catatan
Biasanya, Anda harus memasukkan pernyataan ORACLE_HOME/lib _71 dalam klausa ORACLE_HOME/lib 83Membuat Perubahan pada Database
Operasi DML
Untuk melakukan operasi DML (Data Manipulation Language), seperti operasi INSERT atau UPDATE, Anda dapat membuat objek ORACLE_HOME/lib 29 atau objek ORACLE_HOME/lib 85. ORACLE_HOME/lib _85 objek memungkinkan Anda untuk menjalankan pernyataan dengan berbagai set parameter masukan. Metode ORACLE_HOME/lib _87 dari objek JDBC ORACLE_HOME/lib 28 memungkinkan Anda menentukan pernyataan yang mengambil parameter pengikat variabel dan mengembalikan objek JDBC ORACLE_HOME/lib 85 dengan definisi pernyataan Anda
Gunakan metode ORACLE_HOME/lib 90ORACLE_HOME/lib 59 pada objek ORACLE_HOME/lib 85 untuk mengikat data ke pernyataan yang disiapkan untuk dikirim ke database
Contoh berikut menunjukkan cara menggunakan pernyataan siap untuk menjalankan ORACLE_HOME/lib 93 operasi yang menambahkan dua baris ke tabel ORACLE_HOME/lib 55
ORACLE_HOME/lib _5Operasi DDL
Untuk melakukan operasi bahasa definisi data (DDL), Anda dapat membuat objek ORACLE_HOME/lib 29 atau objek ORACLE_HOME/lib 85. Contoh berikut menunjukkan cara membuat tabel di database menggunakan objek ORACLE_HOME/lib 29
ORACLE_HOME/lib _6Jika kode Anda melibatkan eksekusi ulang operasi DDL, maka sebelum mengeksekusi ulang pernyataan tersebut, Anda harus menyiapkannya lagi. Contoh berikut menunjukkan cara menyiapkan pernyataan DDL Anda sebelum dieksekusi ulang
ORACLE_HOME/lib _7Melakukan Perubahan
Secara default, operasi bahasa manipulasi data (DML) dilakukan secara otomatis segera setelah dijalankan. Ini dikenal sebagai mode komitmen otomatis. Namun, Anda dapat menonaktifkan mode komit otomatis dengan panggilan metode berikut pada objek ORACLE_HOME/lib 28
ORACLE_HOME/lib _8Jika Anda menonaktifkan mode komit otomatis, maka Anda harus melakukan atau mengembalikan perubahan secara manual dengan panggilan metode yang sesuai pada objek ORACLE_HOME/lib 28
ORACLE_HOME/lib _9atau
ORACLE_HOME\bin 0Operasi ORACLE_HOME\bin _00 atau ORACLE_HOME\bin 01 memengaruhi semua pernyataan DML yang dijalankan sejak ORACLE_HOME\bin 00 atau ORACLE_HOME\bin 01 terakhir
Catatan
Jika mode komit otomatis dinonaktifkan dan Anda menutup koneksi tanpa secara eksplisit melakukan atau mengembalikan perubahan terakhir Anda, maka operasi implisit ORACLE_HOME\bin 00 dijalankan
Setiap operasi bahasa definisi data (DDL) selalu menyebabkan ORACLE_HOME\bin 00 implisit. Jika mode komit otomatis dinonaktifkan, maka ORACLE_HOME\bin 00 implisit ini akan melakukan operasi DML yang tertunda yang belum dilakukan atau dibatalkan secara eksplisit
Mengubah Perilaku Komitmen
Ketika sebuah transaksi memperbarui database, itu menghasilkan entri redo yang sesuai dengan pembaruan ini. Oracle Database menyangga redo ini di memori hingga penyelesaian transaksi. Saat Anda melakukan transaksi, proses Penulis Log (LGWR) menulis entri redo untuk komit ke disk, bersama dengan akumulasi entri redo dari semua perubahan dalam transaksi. Secara default, Oracle Database menulis redo ke disk sebelum panggilan kembali ke klien. Perilaku ini menimbulkan latensi dalam komit karena aplikasi harus menunggu entri redo tetap ada di disk
Jika aplikasi Anda memerlukan throughput transaksi yang sangat tinggi dan Anda bersedia memperdagangkan daya tahan komit untuk latensi komit yang lebih rendah, maka Anda dapat mengubah perilaku operasi ORACLE_HOME\bin 00 default, bergantung pada kebutuhan aplikasi Anda. Anda dapat mengubah perilaku operasi ORACLE_HOME\bin _00 dengan opsi berikut
ORACLE_HOME\bin _09
ORACLE_HOME\bin 10
ORACLE_HOME\bin _11
ORACLE_HOME\bin _12
Opsi ini memungkinkan Anda mengontrol dua aspek berbeda dari fase komit
Apakah panggilan ORACLE_HOME\bin 00 harus menunggu server memprosesnya atau tidak. Ini dicapai dengan menggunakan opsi ORACLE_HOME\bin 09 atau ORACLE_HOME\bin 10
Apakah Penulis Log harus mengelompokkan panggilan atau tidak. Ini dicapai dengan menggunakan opsi ORACLE_HOME\bin 12 atau ORACLE_HOME\bin 11
Anda juga dapat menggabungkan opsi yang berbeda secara bersamaan. Misalnya, jika Anda ingin panggilan ORACLE_HOME\bin _00 kembali tanpa menunggu server memprosesnya dan juga penulis log memproses komit secara berkelompok, maka Anda dapat menggunakan opsi ORACLE_HOME\bin 10 dan ORACLE_HOME\bin 11 secara bersamaan. Sebagai contoh
ORACLE_HOME\bin 1Catatan
Anda tidak dapat menggunakan opsi ORACLE_HOME\bin 09 dan ORACLE_HOME\bin 10 bersamaan karena memiliki arti yang berlawanan. Jika Anda melakukannya, maka driver JDBC akan memberikan pengecualian. Hal yang sama berlaku untuk opsi ORACLE_HOME\bin _12 dan ORACLE_HOME\bin 11Menutup Koneksi
Anda harus menutup koneksi ke database setelah Anda melakukan semua operasi yang diperlukan dan tidak lagi memerlukan koneksi. Anda dapat menutup sambungan dengan menggunakan metode ORACLE_HOME/lib _71 dari objek ________41______28, sebagai berikut
ORACLE_HOME\bin 2Catatan
Biasanya, Anda harus memasukkan pernyataan ORACLE_HOME/lib _71 dalam klausa ORACLE_HOME/lib 83Sampel. Menghubungkan, Menanyakan, dan Memproses Hasil
Langkah-langkah di bagian sebelumnya diilustrasikan dalam contoh berikut, yang menggunakan driver Oracle JDBC Thin untuk membuat sumber data, menghubungkan ke database, membuat objek ORACLE_HOME/lib 29, menjalankan kueri, dan memproses kumpulan hasil
Perhatikan bahwa kode untuk membuat objek ORACLE_HOME/lib _29, menjalankan kueri, mengembalikan dan memproses objek ORACLE_HOME/lib 38, dan menutup pernyataan dan koneksi menggunakan API JDBC standar
ORACLE_HOME\bin 3Jika Anda ingin mengadaptasi kode untuk driver OCI, ganti panggilan ke metode ORACLE_HOME\bin 32 dengan yang berikut ini
ORACLE_HOME\bin 4di mana, ORACLE_HOME\bin _33 adalah entri dalam file ORACLE_HOME\bin 34
Panggilan Prosedur Tersimpan dalam Program JDBC
Bagian ini menjelaskan bagaimana driver Oracle JDBC mendukung jenis prosedur tersimpan berikut ini
Prosedur Tersimpan PL/SQL
Driver Oracle JDBC mendukung pemrosesan prosedur tersimpan PL/SQL dan blok anonim. Mereka mendukung sintaks blok PL/SQL dan sebagian besar sintaks melarikan diri JDBC. Panggilan PL/SQL berikut akan berfungsi dengan driver Oracle JDBC apa pun
ORACLE_HOME\bin 5Sebagai contoh penggunaan sintaks Oracle, berikut adalah cuplikan kode PL/SQL yang membuat fungsi tersimpan. Fungsi PL/SQL mendapatkan urutan karakter dan menggabungkan sufiksnya
ORACLE_HOME\bin 6Doa fungsi dalam program JDBC Anda akan terlihat seperti berikut ini
ORACLE_HOME\bin 7Prosedur Tersimpan Java
Anda dapat menggunakan JDBC untuk memanggil prosedur tersimpan Java melalui mesin SQL dan PL/SQL. Sintaks untuk memanggil prosedur tersimpan Java sama dengan sintaks untuk memanggil prosedur tersimpan PL/SQL, dengan asumsi mereka telah dipublikasikan dengan benar. Artinya, Anda telah menulis spesifikasi panggilan untuk menerbitkannya ke kamus data Oracle. Aplikasi dapat memanggil prosedur tersimpan Java menggunakan Native Java Interface untuk pemanggilan langsung ORACLE_HOME\bin 35 metode Java
Memproses Pengecualian SQL
Untuk menangani kondisi kesalahan, driver Oracle JDBC membuang pengecualian SQL, menghasilkan turunan dari kelas ORACLE_HOME\bin 36 atau subkelasnya. Kesalahan dapat berasal dari driver JDBC atau dari database itu sendiri. Pesan yang dihasilkan menggambarkan kesalahan dan mengidentifikasi metode yang melontarkan kesalahan. Informasi run-time tambahan juga dapat ditambahkan
JDBC 3. 0 mendefinisikan hanya satu pengecualian, ________41______47. Namun, ada banyak kategori kesalahan dan berguna untuk membedakannya. Oleh karena itu, di JDBC 4. 0, satu set subclass dari pengecualian ORACLE_HOME/lib 47 diperkenalkan untuk mengidentifikasi berbagai kategori kesalahan. Untuk mengetahui lebih lanjut tentang fitur ini, lihat
Penanganan pengecualian dasar dapat mencakup pengambilan pesan kesalahan, pengambilan kode kesalahan, pengambilan status SQL, dan pencetakan pelacakan tumpukan. Kelas ORACLE_HOME/lib _47 menyertakan fungsionalitas untuk mengambil semua informasi ini, jika tersedia
Mengambil Informasi Kesalahan
Anda dapat mengambil informasi kesalahan dasar dengan metode berikut dari kelas ORACLE_HOME/lib 47
ORACLE_HOME\bin _41
ORACLE_HOME\bin _42
ORACLE_HOME\bin _43
Contoh berikut mencetak keluaran dari pemanggilan metode ________47______41
ORACLE_HOME\bin 8Ini akan mencetak output, seperti berikut ini, untuk kesalahan yang berasal dari driver JDBC
ORACLE_HOME\bin _9Catatan
Teks pesan kesalahan tersedia dalam bahasa alternatif dan kumpulan karakter yang didukung oleh OracleMencetak Stack Trace
Kelas ORACLE_HOME/lib _47 menyediakan metode ORACLE_HOME\bin 46 untuk mencetak jejak tumpukan. Metode ini mencetak jejak tumpukan dari objek yang dapat dibuang ke aliran kesalahan standar. Anda juga dapat menentukan objek ORACLE_HOME\bin _47 atau ORACLE_HOME\bin 48 untuk output
Fragmen kode berikut mengilustrasikan bagaimana Anda bisa menangkap pengecualian SQL dan mencetak pelacakan tumpukan
CREATE ROLE jdbcthin; CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect'); GRANT jdbcthin TO SCOTT; 0Untuk mengilustrasikan bagaimana driver JDBC menangani kesalahan, asumsikan kode berikut menggunakan indeks kolom yang salah