datubaze.files.wordpress.com€¦  · web viewmetodes class.forname() izmantošana savienojuma ar...

40
1 Metodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai The most common approach to register a driver is to use Java's Class.forName() method to dynamically load the driver's class file into memory, which automatically registers it. This method is preferable because it allows you to make the driver registration configurable and portable. Using JDBC, Class.forName() loads the JDBC driver into the JVM. Therefore, a call to Class.forName("X") causes the class named X to be initialized. import java.sql.*; public class Saite{ public static void main(String args[]) throws SQLException, ClassNotFoundException{ try { Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@//localhost:1521/BAZE", "system", „Janis1946");} catch(ClassNotFoundException ex) { System.out.println("Error: unable to load driver class!"); }

Upload: others

Post on 06-Sep-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

1

Metodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanaiThe most common approach to register a driver is to use Java's Class.forName() method to dynamically load the driver's class file into memory, which automatically registers it. This method is preferable because it allows you to make the driver registration configurable and portable. Using JDBC, Class.forName() loads the JDBC driver into the JVM. Therefore, a call to Class.forName("X") causes the class named X to be initialized.

import java.sql.*;public class Saite{public static void main(String args[]) throws SQLException, ClassNotFoundException{try {Class.forName("oracle.jdbc.driver.OracleDriver");Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/BAZE", "system", „Janis1946");}

catch(ClassNotFoundException ex) {System.out.println("Error: unable to load driver class!"); }

Page 2: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

2

Java klases ielādes operatīvajā atmiņā pārbaude. Lietojuma programma (no NetBeans)

package Java_Savienojumi;

import java.lang.*;class KlasesIelade { public static void main(String[] args) { try {// returns the Class object for the class with the specified name Class klase = Class.forName("java.lang.ClassLoader");// returns the name and package of the class System.out.println("Klase = " + klase.getName()); System.out.println("Pakete = " + klase.getPackage()); } catch(ClassNotFoundException ex) {System.out.println(ex.toString());}}}

run:Klase = java.lang.ClassLoaderPakete = package java.lang, Java Platform API Specification, version 1.6BUILD SUCCESSFUL (total time: 0 seconds)

Page 3: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

3

Java klases ielādes operatīvajā atmiņā pārbaude. Datu bāzes servera programma

drop java source "KlasesIelade";drop procedure KLASE_IELADE;commit;

create or replace JAVA source named "KlasesIelade" asimport java.lang.*;public class KlasesIelade { public static void main(String[] args) { try {// returns the Class object for the class with the specified name Class klase = Class.forName("java.lang.ClassLoader");// returns the name and package of the class System.out.println("Klase = " + klase.getName()); System.out.println("Pakete = " + klase.getPackage()); } catch(ClassNotFoundException ex) {System.out.println(ex.toString());}}}

create or replace procedure KLASE_IELADEas language JAVA name 'KlasesIelade.main(java.lang.String[ ])';

set SERVEROUTPUT ON;call dbms_java.set_output(2000);

call SYSTEM.KLASE_IELADE();

call succeeded.Klase = java.lang.ClassLoaderPakete = package java.lang

Page 4: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

4

JDBC draivera reģistrācijas pārbaude. Oracle JDBC draivera atrašanās vieta nav norādīta CLASSPATH mainīgajā

The simplest way to test JDBC driver instalation is to try to load the desired JDBC driver. If it loads successfully, then it means your JDBC driver is installed properly. Otherwise, either the JDBC driver is not properly added to your CLASSPATH environment variable or there might be some other problem.

package J_L1_P;

import java.sql.*;import java.sql.SQLException;import java.io.IOException;class JDBCDraiveraInsalesana { public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { System.out.println("JDBC draivera intalēšanas sākums.");try { // DBS Oracle draivera nosaukuma norāde.String className = "oracle.jdbc.driver.OracleDriver"; Class driverObject = Class.forName(className);System.out.println("Atrasts draiveris = " + driverObject); System.out.println("JDBC draivera instalēšana ir veiksmīga.");}catch(Exception e) { System.out.println("JDBC instalēšana ir neveiksmīga. Nav atrasts draiveris: " + e.getMessage()); }System.out.println("JDBC draivera instalēšana ir pabeigta.");}}

run:JDBC draivera intalēšanas sākums.JDBC instalēšana ir neveiksmīga. Nav atrasts draiveris: oracle.jdbc.driver.OracleDriverJDBC draivera instalēšana ir pabeigta.BUILD SUCCESSFUL (total time: 0 seconds)

Page 5: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

5

JDBC draivera reģistrācijas pārbaude. Oracle JDBC draivera atrašanās vieta ir norādīta CLASSPATH mainīgajā

package J_L1_P;

import java.sql.*;import java.sql.SQLException;import java.io.IOException;class JDBCDraiveraInsalesana { public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { System.out.println("JDBC draivera intalēšanas sākums.");try { // DBS Oracle draivera nosaukuma norāde.String className = "oracle.jdbc.driver.OracleDriver"; Class driverObject = Class.forName(className);System.out.println("Atrasts draiveris = " + driverObject); System.out.println("JDBC draivera instalēšana ir veiksmīga.");}catch(Exception e) { System.out.println("JDBC instalēšana ir neveiksmīga. Nav atrasts draiveris: " + e.getMessage()); }System.out.println("JDBC draivera instalēšana ir pabeigta.");}}

run:JDBC draivera intalēšanas sākums.Atrasts draiveris = class oracle.jdbc.driver.OracleDriverJDBC draivera instalēšana ir veiksmīga.JDBC draivera instalēšana ir pabeigta.BUILD SUCCESSFUL (total time: 0 seconds)

Page 6: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

6

JDBC versijas izvade

package J_L1_P;import java.sql.*;import java.sql.SQLException;import oracle.jdbc.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException{try {Connection savienojums = null;Class.forName("oracle.jdbc.driver.OracleDriver");savienojums = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE","system", "Janis1946");DatabaseMetaData meta = savienojums.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion());}catch(Exception e) { System.out.println("JDBC draivera metadati nav atrasti. " + e.getMessage());}}}

run:JDBC driver version is 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

Page 7: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

7

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu, izmantojot Class.forName pieeju. Datu bāzes servera programma

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.lang.*;import java.sql.*;import oracle.jdbc.*;class JDBCVersija{public static void main (String args[ ]) {try {Class klase = Class.forName("oracle.jdbc.driver.OracleDriver ");System.out.println("Klase = " + klase.getName());System.out.println("Pakete = " + klase.getPackage());

}catch(ClassNotFoundException ex) {System.out.println(ex.toString());}}}

Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", "system", "Janis1946");

DatabaseMetaData meta = savienojums.getMetaData();System.out.println("JDBC draivera versija = " + meta.getDriverVersion()); }

create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

SET SERVEROUTPUT ON;CALL dbms_java.set_output(2000);

call SYSTEM.JDBCVERSIJA();

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('01-12-2013', 'DD-MM-YYYY');

Page 8: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

8

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu, izmantojot Class.forName pieeju. Lietojuma programma (no NetBeans)

package J_L1_P;import java.sql.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException, ClassNotFoundException {try {Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:BAZE";String username = "system";String password = "Janis1946";Connection savien = DriverManager.getConnection(url, username, password);DatabaseMetaData meta = savien.getMetaData();System.out.println("JDBC draivera versija = " + meta.getDriverVersion()); }catch(ClassNotFoundException ex) {System.out.println(ex.toString());}}}

run:JDBC draivera versija = 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

package J_L1_P;import java.sql.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException, ClassNotFoundException {try {Class.forName("oracle.jdbc.driver.OracleDriver");Connection savien =DriverManager.getConnection("jdbc:oracle:thin:system/Janis1946@localhost:1521:BAZE");DatabaseMetaData meta = savien.getMetaData();System.out.println("JDBC draivera versija = " + meta.getDriverVersion()); }catch(ClassNotFoundException ex) {System.out.println(ex.toString());}}}

run:JDBC draivera versija = 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

Page 9: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

9

Klases DriverManager izmantošana savienojuma izveidošanai ar datu bāziDriverManager: This fully implemented class connects an application to a data source, which is specified by a database URL. When this class first attempts to establish a connection, it automatically loads any JDBC 4.0 drivers found within the class path. Note that your application must manually load any JDBC drivers prior to version 4.0.Using DriverManager.registerDriver() java.sql.DriverManager provides basic services for managing a set of JDBC drivers. The DriverManager class is the management layer of JDBC, working between the user and the JDBC drivers. It keeps track of the JDBC drivers that are available and handles establishing a connection between a database and the appropriate driver. DriverManager.registerDriver(driverObject) registers the given driverObject with the DriverManager class. A newly loaded driver class should call the method registerDriver to make itself known to the DriverManager class.

try {Driver myDriver = new oracle.jdbc.driver.OracleDriver();DriverManager.registerDriver( myDriver );}

catch(ClassNotFoundException ex) {System.out.println("Error: unable to load driver class!");System.exit(1); }

Page 10: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

10

JDBC draivera versijas noteikšana ar Java lietojuma programmu, izmantojot DriverManager ar URL norādi

package J_L1_P;

import java.sql.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException {try {DriverManager.registerDriver(new oracle.jdbc.OracleDriver());Connection savienojums = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", "system", "Janis1946");// Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = savienojums.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion());}catch(SQLException e) { System.out.println("JDBC draivera metadati nav atrasti. " + e.getMessage());}}}

run:JDBC driver version is 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

Page 11: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

11

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu, izmantojot DriverManager ar URL norādi

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{ public static void main (String args[ ]) throws SQLException {//Connection savienojums = null;//Class.forName("oracle.jdbc.driver.OracleDriver");//savienojums = //DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", // "system", "janis");//DatabaseMetaData meta = savienojums.getMetaData();DriverManager.registerDriver(new oracle.jdbc.OracleDriver());Connection savienojums = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", "system", "Janis1946"); // Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = savienojums.getMetaData(); // Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion()); }}

create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

SET SERVEROUTPUT ON;CALL dbms_java.set_output(2000);

call SYSTEM.JDBCVERSIJA();

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('01-12-2013', 'DD-MM-YYYY');

Page 12: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

12

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu, izmantojot DriverManager pieeju

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;class JDBCVersija{public static void main (String args[ ])throws SQLException {Connection conn = DriverManager.getConnection("jdbc:default:connection:");// Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = conn.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion()); }}

create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

SET SERVEROUTPUT ON;CALL dbms_java.set_output(2000);

call SYSTEM.JDBCVERSIJA();JDBC driver version is 10.2.0.1.0

Ja tiek modificēta programma var parādīties kļūdu paziņojums:ORA-29549: class string.string has changed, Java session state cleared Cause: A class in use by the current session was redefined or dropped, invalidating the current Java session state and requiring that it be cleared.Action: No action required – komanda jāatkārto!

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('23-03-2015', 'DD-MM-YYYY');

Page 13: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

13

Driver klases instances (objekta) izveidošana savienojuma ar datu bāzi realizēšanaiYou can load the JDBC drivers by creating an object using the vendor’s JDBC Driver class. For example, the following example loads two JDBC drivers:

// Oracle draivera ielādepublic class LoadJDBCDrivers { oracle.jdbc.driver.OracleDriver oracleDriver = new oracle.jdbc.driver.OracleDriver();

package J_L1_P;import java.sql.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException {try {oracle.jdbc.driver.OracleDriver oracleDriver = new oracle.jdbc.driver.OracleDriver();Connection savienojums = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", "system", "Janis1946");// Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = savienojums.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion());}catch(SQLException e) { System.out.println("JDBC draivera metadati nav atrasti. " + e.getMessage());}}}

run:JDBC driver version is 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

Page 14: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

14

Savienojuma ar datu bāzi izveidošana lietojot programmā System.properties() You can provide a Java System property, jdbc.drivers, whose value is a list of driver class names. (Class names are separated by acolon.)

import java.util.*; import java.io.*; import java.sql.*;public class JDBCVersija {

// Create an JDBC/ODBC connection... public static Connection getJdbcOdbcConnection() throws Exception { //String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; // note: northwind data source must be defined // using the ODBC Data Source Administrator String url = "jdbc:odbc:northwind"; String username = ""; String password = ""; //Class.forName(driver); // load JDBC-ODBC driver return DriverManager.getConnection(url, username, password); }

// Create an Oracle connection... public static Connection getOracleConnection() throws Exception { //String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:scorpian"; String username = "octopus"; String password = "octopus"; //Class.forName(driver); // load Oracle driver return DriverManager.getConnection(url, username, password); }

// Create an MySQL connection... public static Connection getMySqlConnection() throws Exception { //String driver = "org.gjt.mm.mysql.Driver"; String url = "jdbc:mysql://localhost/tiger"; String username = "root"; String password = "root"; //Class.forName(driver); // load MySQL driver return DriverManager.getConnection(url, username, password); }

public static void main(String[] args) { System.out.println("-- TestSystemProperty begin --"); Connection oracleConn = null; Connection mysqlConn = null; Connection odbcConn = null;System.out.println("System.getProperty(\"jdbc.drivers\")="+ System.getProperty("jdbc.drivers"));// try getting a MySQL connection try { mysqlConn = getMySqlConnection(); System.out.println("mysqlConn="+mysqlConn); } catch(Exception e) { System.out.println("error 1111="+e.getMessage()); }

Page 15: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

15

// try getting an ODBC connection again try { odbcConn = getJdbcOdbcConnection(); System.out.println("mysqlConn="+odbcConn); } catch(Exception e) { System.out.println("error 2222="+e.getMessage()); } System.out.println("-- TestSystemProperty end --");}}

The following code shows how to run the TestSystemProperty program: $ javac JDBCVersija.java$ java JDBCVersija -- TestSystemProperty begin – System.getProperty("jdbc.drivers")=null error 1111=No suitable driver error 2222=No suitable driver$java -Djdbc.drivers=org.gjt.mm.mysql.Driver: sun.jdbc.odbc.JdbcOdbcDriver TestSystemProperty -- TestSystemProperty begin – System.getProperty("jdbc.drivers")= org.gjt.mm.mysql.Driver:sun.jdbc.odbc.JdbcOdbcDriver mysqlConn=com.mysql.jdbc.Connection@efd552 mysqlConn=sun.jdbc.odbc.JdbcOdbcConnection@fd54d6 -- TestSystemProperty end --$You should put the specified classes (following option -D) in the CLASSPATH environment variable; then the DriverManager class automatically loads the JDBC drivers into your program. The sun.jdbc.odbc.JdbcOdbcDriver is part of the JDK distribution, so there is no need to add it directly to the CLASSPATH environment variable.

Page 16: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

16

Savienojuma ar datu bāzi izveidošana lietojot System.properties() komandas rindāYou can alsopass the driver names to jdbc.drivers (as a System property), whose value is alist of driver class names (class names are separated by acolon), like so:

java -Djdbc.drivers=org.gjt.mm.mysql.Driver:sun.jdbc.odbc.JdbcOdbcDriver

<jdbc-application-program>

Page 17: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

17

Savienojuma ar datu bāzi izveidošana lietojot Thread klasiAnother method to load a JDBC driver is to use a Thread class, like so:

String className = "sun.jdbc.odbc.JdbcOdbcDriver"; Class theClass = null; try { Thread currentThread = Thread.currentThread(); theClass = currentThread.getContextClassLoader().loadClass(className); }// here the class is loaded

catch (ClassNotFoundException e) { e.printStackTrace();// your class not found in CLASSPATH // driver not loaded // handle the exception }

Sun Microsystems maintains alist of JDBC drivers for all major database systems. You can find this list at http://java.sun.com/products/jdbc/jdbc.drivers.html.

Page 18: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

18

Savienojuma ar datu bāzi izveidošana izmantojot interfeisu OracleDataSourceThis interface is preferred over DriverManager because it allows details about the underlying data source to be transparent (skaidrs) to your application. A DataSource object's properties are set so that it represents a particular data source. DataSource objects can provide connection pooling and distributed transactions.

OracleDataSource ods = new OracleDataSource();ods.setURL("jdbc:oracle:kprb");Connection conn = ods.getConnection();

OracleDataSource ods = new OracleDataSource();ods.setURL("jdbc:default:connection");Connection conn = ods.getConnection();

ods = new OracleDataSource();ods.setURL("jdbc:oracle:thin:@//server.local:1521/prod");ods.setUser("scott");

ods.setPassword("tiger");

Page 19: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

19

JDBC datu bāzes sistēmas iekšējais draiveris (server-side internal driver)

Vienmēr strādā noklusētajā sesijā, tajā pašā kā JVM.Lai izveidotu savienojumu ar DBS tiek lietoti divi varianti:

1. Tiek izmantota OracleDataSource.getConnection metode ar URL parametru sekojošās formās:jdbc:oracle:kprbjdbc:default:connectionjdbc:oracle:kprb:jdbc:default:connection:

2. DBVS Oracle metode defaultConnection no OracleDriver clases. Šis variants tiek rekomendēts kā pamata variants.

Auto-commit mode is disabled in the server. You must manage transaction COMMIT and ROLLBACK operations explicitly by using the appropriate methods on the connection object:conn.commit();or:conn.rollback();

If you want to determine whether your code is running on the server, then use the System.getProperty():System.getProperty ("oracle.jserver.version")The getProperty() method returns the following:1) A String that represents Oracle Database release, if running on the server2) null, if running on the client

Savienojuma veidošana izmantojot OracleDriver klases defaultConnection metodi

import java.sql.*; import oracle.jdbc.*; class JDBCConnection { public static Connection connect() throws SQLException { Connection conn = null; try { // connect with the server-side internal driver conn = ora.defaultConnection(); } } catch (SQLException e) {...} return conn; } }

Page 20: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

20

After you've loaded the driver, you can establish a connection using the DriverManager.getConnection() method. The three overloaded DriverManager.getConnection() methods:

1) getConnection(String url)2) getConnection(String url, Properties prop)3) getConnection(String url, String user, String password)

Here each form requires a database URL. A database URL is an address that points to your database.

RDBMS JDBC driver name URL format

MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/ databaseName

ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName

Page 21: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

21

JDBC draivera versijas noteikšana ar Java lietojuma programmu, izmantojot OracleDataSource pieeju

package J_L1_P;import java.sql.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{public static void main (String args[ ]) throws SQLException {try{OracleDataSource ods = new OracleDataSource();ods.setURL("jdbc:oracle:thin:system/Janis1946@localhost:1521:BAZE");Connection conn = ods.getConnection();// Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = conn.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion());}

catch(SQLException ex) {System.out.println(ex.toString());} }}

run:JDBC driver version is 11.2.0.1.0BUILD SUCCESSFUL (total time: 0 seconds)

Page 22: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

22

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu, izmantojot OracleDataSource pieeju

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{ public static void main (String args[ ]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:default:connection:"); Connection conn = ods.getConnection(); // Datu bāzes meta-datu objekta izveidošana DatabaseMetaData meta = conn.getMetaData(); // Draivera versijas numura izvade System.out.println("JDBC driver version is " + meta.getDriverVersion()); }}

create procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

set SERVEROUTPUT ON;call dbms_java.set_output(2000);

call SYSTEM.JDBCVERSIJA();JDBC driver version is 10.1.0.2.0Ja tiek modificēta programma var parādīties kļūdu paziņojums:ORA-29549: class string.string has changed, Java session state cleared Cause: A class in use by the current session was redefined or dropped, invalidating the current Java session state and requiring that it be cleared.Action: No action required – komanda jāatkārto!

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere OBJECT_TYPE in ('JAVA SOURCE', 'JAVA CLASS');OBJECT_NAME OBJECT_TYPE STATUS-----------------------------------------------------------------JDBCVersija JAVA CLASS VALIDJDBCVersija JAVA SOURCE VALID

Page 23: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

23

JDBC draivera versijas noteikšana

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{ public static void main (String args[ ]) throws SQLException {OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:oracle:thin:JAVA_L/janis@DATORS:1521:BAZE"); Connection conn = ods.getConnection(); // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); } };

create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

SQL> SET SERVEROUTPUT ONSQL> CALL dbms_java.set_output(2000);SQL>call JDBCVERSIJA();JDBC driver version is 10.1.0.2.0

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTS

OBJECT_NAME OBJECT_TYPE STATUSJDBCVERSIJA PROCEDURE VALIDJDBCVersija JAVA CLASS VALIDJDBCVersija JAVA SOURCE VALID

Page 24: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

24

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu Savienojuma veidošana ar OracleDataSource objekta izmantošanu

OracleDataSource ods = new OracleDataSource();ods.setURL("jdbc:default:connection");Connection conn = ods.getConnection();

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{ public static void main (String args[ ]) throws SQLException { OracleDataSource ods = new OracleDataSource(); ods.setURL("jdbc:default:connection:"); Connection conn = ods.getConnection(); // Datu bāzes meta-datu objekta izveidošana DatabaseMetaData meta = conn.getMetaData(); // Draivera versijas numura izvade System.out.println("JDBC driver version is " + meta.getDriverVersion()); }};/create procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';/SQL> SET SERVEROUTPUT ON;SQL> CALL dbms_java.set_output(2000); SQL>call SYSTEM.JDBCVERSIJA();JDBC driver version is 10.1.0.2.0

Ja tiek modificēta programma var parādīties kļūdu paziņojums:ORA-29549: class string.string has changed, Java session state cleared Cause: A class in use by the current session was redefined or dropped, invalidating the current Java session state and requiring that it be cleared.Action: No action required – komanda jāatkārto!select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere OBJECT_TYPE in ('JAVA SOURCE', 'JAVA CLASS');OBJECT_NAME OBJECT_TYPE STATUS-----------------------------------------------------------------JDBCVersija JAVA CLASS VALIDJDBCVersija JAVA SOURCE VALID

Page 25: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

25

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu. Datu bāzes savienojumam izmantojot noklusēto savienojumu

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;class JDBCVersija{public static void main (String args[ ]) throws SQLException {Connection conn = DriverManager.getConnection("jdbc:default:connection:");// Datu bāzes meta-datu objekta izveidošanaDatabaseMetaData meta = conn.getMetaData();// Draivera versijas numura izvadeSystem.out.println("JDBC driver version is " + meta.getDriverVersion()); }}

create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';

SET SERVEROUTPUT ON;CALL dbms_java.set_output(2000);

call SYSTEM.JDBCVERSIJA();JDBC driver version is 10.2.0.1.0

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('23-03-2015', 'DD-MM-YYYY');

Page 26: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

26

JDBC draivera versijas noteikšana ar datu bāzes serverī glabājamo Java programmu

drop java source "JDBCVersija";drop procedure JDBCVERSIJA;commit;

create or replace JAVA source named "JDBCVersija" asimport java.sql.*;import oracle.jdbc.*;import oracle.jdbc.pool.OracleDataSource;class JDBCVersija{ public static void main (String args[ ]) throws SQLException {//Connection savienojums = null;//Class.forName("oracle.jdbc.driver.OracleDriver");//savienojums = //DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", // "system", "janis");//DatabaseMetaData meta = savienojums.getMetaData();DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); Connection savienojums = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:BAZE", "system", "janis"); // Datu bāzes meta-datu objekta izveidošana DatabaseMetaData meta = savienojums.getMetaData(); // Draivera versijas numura izvade System.out.println("JDBC driver version is " + meta.getDriverVersion()); }};/create or replace procedure JDBCVERSIJAas language JAVA name 'JDBCVersija.main(java.lang.String[ ])';/SQL> SET SERVEROUTPUT ON;SQL> CALL dbms_java.set_output(2000);SQL>call SYSTEM.JDBCVERSIJA();

select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('01-12-2013', 'DD-MM-YYYY');

Page 27: datubaze.files.wordpress.com€¦  · Web viewMetodes Class.forName() izmantošana savienojuma ar datu bāzi izveidošanai. The most common approach to register a driver is to use

27

JDBC izmantošanas tests

package J_L1_P;import java.sql.*;import oracle.jdbc.pool.OracleDataSource; import java.io.*; // Lai varētu nolasīt no komandu rindas.public class JDBCParbaude{public static void main(String args[ ]){try{System.out.println("Ievadiet savienojumam ar DB nepieciešamos datus!");String user;String password;user = readEntry("Lietotājs: ");int slash_index = user.indexOf('/');if (slash_index != -1) {password = user.substring(slash_index + 1); user = user.substring(0, slash_index);}elsepassword = readEntry("Parole: ");System.out.print("Savienojuma veidošanas uzsākšana.");System.out.flush(); // Atbrīvo resursus.System.out.println("Savienojuma veidošana.");OracleDataSource ods = new OracleDataSource(); // Avota objekta izveidošana. ods.setURL("jdbc:oracle:thin:@localhost:1521:BAZE"); ods.setUser(user); ods.setPassword(password); Connection conn = ods.getConnection(); System.out.println("Savienojums izveidots."); Statement stmt = conn.createStatement(); // Komandas objekta izveidošana. ResultSet rset = stmt.executeQuery("select 'DB vaicājums realizēts.' from dual"); while (rset.next()) {System.out.println(rset.getString(1));} System.out.println("JDBC strādā."); rset.close(); stmt.close(); conn.close();}catch(Exception e){"" + e.getMessage();}} // Uzrāda kļūdu. ?

// Rindas nolasīšana no standarta ievades iekārtas (klaviatūras).public static String readEntry(String prompt)throws IOException {StringBuffer buffer = new StringBuffer();System.out.print(prompt);System.out.flush(); // Attīra buferi.int c = System.in.read();while (c != '\n'){buffer.append((char) c); c = System.in.read(); }return buffer.toString().trim(); }}

run:Ievadiet savienojumam ar DB nepieciešamos datus!Lietotājs: systemParole: Janis1946Savienojuma veidošanas uzsākšana.Savienojuma veidošana.Savienojums izveidots. DB vaicājums realizēts.JDBC strādā.BUILD SUCCESSFUL (total time: 18 seconds)