Top Banner
Въведение в Въведение в JDBC JDBC Димитър Кунчев Димитър Кунчев 3 rd rd Eye Solutions Eye Solutions Java Database Connectivity Java Database Connectivity
40

Въведение в JDBC

Feb 09, 2016

Download

Documents

chelsey

Въведение в JDBC. Java Database Connectivity. Димитър Кунчев. 3 rd Eye Solutions. Съдържание. Въведение в JDBC Изпълнение на заявки Различни заявки Обработка на грешки Транзакции Добрите практики. JDBC. Технологията. За JDBC. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Въведение в  JDBC

Въведение вВъведение в JDBC JDBC

Димитър КунчевДимитър Кунчев33rdrd Eye Solutions Eye Solutions

Java Database ConnectivityJava Database Connectivity

Page 2: Въведение в  JDBC

СъдържаниеСъдържание

1.1. Въведение вВъведение в JDBC JDBC2.2. Изпълнение на заявкиИзпълнение на заявки3.3. Различни заявкиРазлични заявки4.4. Обработка на грешкиОбработка на грешки5.5. ТранзакцииТранзакции6.6. Добрите практикиДобрите практики

Page 3: Въведение в  JDBC

JDBCJDBC

ТехнологиятаТехнологията

Page 4: Въведение в  JDBC

ЗаЗа JDBC JDBC

• JDBC JDBC е стандартен интерфейс за е стандартен интерфейс за рабрабоота с релацита с релациоонни бази данни нни бази данни презпрез Java Java• Пакетът Пакетът JDBC Core API JDBC Core API вв java.sqljava.sql

• Допълнителен пакет Допълнителен пакет JDBC 2.0 JDBC 2.0 javax.sqljavax.sql

• Пакетът Пакетът JDBC 3.0 API JDBC 3.0 API включвавключва горните двагорните два

Page 5: Въведение в  JDBC

Архитектурата на Архитектурата на JDBCJDBC

Приложение

Връзка

Driver Manager

Заявка Резултат

Драйвер Драйвер Драйвер

БазаБаза БазаБаза БазаБаза

Page 6: Въведение в  JDBC

Компоненти на Компоненти на JDBCJDBC

• Driver ManagerDriver Manager• Зарежда драйверите на базите данни и Зарежда драйверите на базите данни и

обслужва връзката между обслужва връзката между приложението и драйвераприложението и драйвера

• ДрайверДрайвер• Прехвърля извикванията (Прехвърля извикванията (API callsAPI calls)) към към

съответната базасъответната база• Връзка (Връзка (ConnectionConnection))• Сесия между приложението и драйвера Сесия между приложението и драйвера

на базатана базата

Page 7: Въведение в  JDBC

Компоненти на Компоненти на JDBC (2)JDBC (2)

• ЗаявкаЗаявка• SQL SQL заявка за извличане или промяна заявка за извличане или промяна

на даннитена данните• МетаданниМетаданни• Информация за върнатите данни, Информация за върнатите данни,

връзката или драйвера на базатавръзката или драйвера на базата• РезултатРезултат• Логическо множество от колони и Логическо множество от колони и

редове, върнато от базата - таблицаредове, върнато от базата - таблица

Page 8: Въведение в  JDBC

Достъп до данни чрезДостъп до данни чрез JDBCJDBC

Изпълнение на заявкиИзпълнение на заявки

Page 9: Въведение в  JDBC

СтъпкаСтъпка 1: 1: ЗарежданеЗареждане

• Зареждане на Зареждане на JDBC JDBC драйвер с един драйвер с един редред::

• Името на нужния ви клас, ще намерите Името на нужния ви клас, ще намерите в документацията на драйверав документацията на драйвера

• Зареждане на Зареждане на Oracle JDBCOracle JDBC драйвер: драйвер:

• Зареждане наЗареждане на JDBC-ODBC bridge driver JDBC-ODBC bridge driver

Class.forName("Class.forName("<<jdbcjdbc d driverriver class> class>");");

Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("oracle.jdbc.driver.OracleDriver");

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Page 10: Въведение в  JDBC

СтъпкаСтъпка 2: 2: СвързванеСвързване

• Пример за установяване на Пример за установяване на връзката през драйверавръзката през драйвера::

• Например, ако използватеНапример, ако използвате JDBC- JDBC-ODBC bridge ODBC bridge драйвер, тодрайвер, то адреса ще адреса ще започва сзапочва с " "jdbc:odbc:jdbc:odbc:““

• Подробностите за всеки драйвер Подробностите за всеки драйвер можете да намерите в можете да намерите в документацията мудокументацията му

Connection conConnection con == DriverManager.DriverManager. getConnection(getConnection(""urlurl"",, "user","user", "pass");"pass");

Page 11: Въведение в  JDBC

СтъпкаСтъпка 2: 2: Свързване с Свързване с ODBCODBC

• Пример за свързване с Пример за свързване с ODBC ODBC драйвер:драйвер:• Източникът на данни еИзточникът на данни е " "LibraryLibrary" " • DBMS DBMS потребителско име:потребителско име: " "adminadmin""• ПаролаПарола " "secretsecret""

• Establishing a connection:Establishing a connection:Connection dbCon = DriverManager.Connection dbCon = DriverManager. getConnection("jdbc:odbc:Library",getConnection("jdbc:odbc:Library", "admin","admin", "secret");"secret");

Page 12: Въведение в  JDBC

СтъпкаСтъпка 2: 2: Свързване сСвързване с OracleOracle

• Пример за връзка сПример за връзка с Oracle Oracle::• Сървърът еСървърът е Oracle 10g Express Edition, Oracle 10g Express Edition,

локална инсталациялокална инсталация• Базата се казваБазата се казва " "HRHR" " • Паролата еПаролата е " "hrhr""

• Establishing a connection:Establishing a connection:Connection dbCon = DriverManager.getConnection(Connection dbCon = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521/xe","jdbc:oracle:thin:@localhost:1521/xe", "HR","HR", "hr");"hr");

Page 13: Въведение в  JDBC

СтъпкаСтъпка 3: 3: Създаване на Създаване на заявказаявка

• ОбектОбект StatementStatement създавасъздава SQL SQL заявките, заявките, които ще се изпратят към които ще се изпратят към DBMSDBMS• За За SELECT SELECT заявки се използва заявки се използва executeQuery()executeQuery()

• За За INSERT/UPDATE/DELETE INSERT/UPDATE/DELETE заявки -заявки - executeUpdate()executeUpdate()

• Използва се активна инстанция на обект Използва се активна инстанция на обект ConnectionConnection

Connection dbCon = DriverManager.getConnection(Connection dbCon = DriverManager.getConnection( "jdbc:odbc:Library", "admin", "secret");"jdbc:odbc:Library", "admin", "secret");Statement stmt = Statement stmt = dbCon.createStatement()dbCon.createStatement();;

Page 14: Въведение в  JDBC

СтъпкаСтъпка 4: 4: Изплнение на Изплнение на заявказаявка

• executeQuery()executeQuery() изпълняваизпълнява предварително създадената предварително създадената SQL SQL заявказаявка

• Резултатът се връща катоРезултатът се връща като ResultSetResultSet обектобектConnection dbCon =Connection dbCon = DriverManager.getConnection(DriverManager.getConnection( "jdbc:odbc:Library", "admin", "secret");"jdbc:odbc:Library", "admin", "secret");

Statement stmt = dbCon.createStatement();Statement stmt = dbCon.createStatement();

ResultSet rs = stmt.ResultSet rs = stmt.executeQueryexecuteQuery(( "SELECT first_name FROM employees");"SELECT first_name FROM employees");

Page 15: Въведение в  JDBC

СтъпкаСтъпка 4: 4: Изпълнение на Изпълнение на заявказаявка

• executeUpdate()executeUpdate() изпълняваизпълнява DML/DDL DML/DDL SQL SQL заявкизаявки• Връща се резултат – броя на Връща се резултат – броя на

променените записи в базатапроменените записи в базата

Statement stmt = dbCon.createStatement();Statement stmt = dbCon.createStatement();int rowsAffected = stmt.int rowsAffected = stmt.executeUpdateexecuteUpdate(( "UPDATE employees SET salary = salary*1.2");"UPDATE employees SET salary = salary*1.2");

Page 16: Въведение в  JDBC

СтъпкаСтъпка 5: 5: Върнатият Върнатият резултатрезултат

• ОбектътОбектът ResultSetResultSet• Потдържа курсор, сочещ към текущия Потдържа курсор, сочещ към текущия

запис (еднопосочен!)запис (еднопосочен!)• Има подходящи методи за извличане на Има подходящи методи за извличане на

даннитеданнитеResultSetResultSet rs = stmt.executeQuery( rs = stmt.executeQuery( "SELECT last_name, salary FROM employees");"SELECT last_name, salary FROM employees");while (rswhile (rs.next().next()) {) { String name = rsString name = rs.getString.getString("last_name");("last_name"); double salary = rsdouble salary = rs.getDouble.getDouble("salary");("salary"); System.out.println(name + " " + salary);System.out.println(name + " " + salary);}}

Page 17: Въведение в  JDBC

СтъпкаСтъпка 6: 6: Затваряне на Затваряне на връзкатавръзката

• Експлицитно унищожавайтеЕксплицитно унищожавайте ConnectionConnection, , StatementStatement, , ии ResultSetResultSet обектите за да обектите за да се освободят ресурситесе освободят ресурсите

try {try { Connection conn = ...; Connection conn = ...; Statement stmt = ...;Statement stmt = ...; ResultSet rset = stmt.executeQuery(ResultSet rset = stmt.executeQuery(...);...); ... ...} finally} finally // clean up// clean up rset.close(); rset.close(); stmt.close(); stmt.close(); conn.close();conn.close();}}

Page 18: Въведение в  JDBC

Обект Обект SQLExceptionSQLException• SQL SQL заявки могат да хвърлятзаявки могат да хвърлят

java.sqljava.sql..SQLExceptionSQLException по време на по време на изпълнениеизпълнениеtry {try { rset = stmt.executeQuery(rset = stmt.executeQuery( "SELECT first_name, last_name FROM employee");"SELECT first_name, last_name FROM employee"); } catch (SQLException sqlex) {} catch (SQLException sqlex) {

... // ... // ПрихващамеПрихващаме SQL SQL грешки грешки } finally {} finally { // // Почистваме използваните ресурсиПочистваме използваните ресурси try {try { if (rset != null) rset.close(); if (rset != null) rset.close(); } catch (SQLException sqlex) { } catch (SQLException sqlex) { ... // ... // Игнорираме грешки при затварянеИгнорираме грешки при затваряне }} ......}}

Page 19: Въведение в  JDBC

JDBC JDBC ЗаявкиЗаявкиИнтерфейси Интерфейси Statement, Statement,

PreparedStatement PreparedStatement ии CallableStatementCallableStatement

Page 20: Въведение в  JDBC

DML DML ЗаявкиЗаявки

1.1. Създаваме Създаваме StatementStatement обектобект

2.2. ИзвиквамеИзвикваме executeUpdate()executeUpdate() за да за да изпълним заявкатаизпълним заявката

• ПримерПример

Statement stmt = conn.createStatement();Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(sql_dml_statement);int count = stmt.executeUpdate(sql_dml_statement);

Statement stmt = conn.createStatement();Statement stmt = conn.createStatement();

int rowsDeleted = stmt.executeUpdate("DELETE FROM int rowsDeleted = stmt.executeUpdate("DELETE FROM order_items WHERE order_id = 2354");order_items WHERE order_id = 2354");

Page 21: Въведение в  JDBC

Неизвестни заявкиНеизвестни заявки

1.1. Създаване Създаване StatementStatement обектобект

2.2. ИзвиквамеИзвикваме execute()execute() за да изпълнимза да изпълним

3.3. Обработваме резултатаОбработваме резултата

Statement stmt = conn.createStatement();Statement stmt = conn.createStatement();

boolean result = stmt.execute(SQLstatement); boolean result = stmt.execute(SQLstatement);

if (result) {if (result) { // // било е било е selectselect ResultSet r = stmt.ResultSet r = stmt.getResultSetgetResultSet(); ...(); ...}}else { // else { // било е било е update update или от сортаили от сорта int count = stmt.int count = stmt.getUpdateCountgetUpdateCount(); ...(); ...}}

Page 22: Въведение в  JDBC

Prepared StatementPrepared Statementss

• PreparedStatementPreparedStatement се използват за:се използват за:• Изпълнение на заявка с параметриИзпълнение на заявка с параметри• Многократно изпълнение на заявкаМногократно изпълнение на заявка

String insertString insertSQLSQL = "INSERT INTO employees(" + = "INSERT INTO employees(" + "first_name, last_name, salary) VALUES(?,?,?)";"first_name, last_name, salary) VALUES(?,?,?)";PreparedStatement stmt =PreparedStatement stmt = ccon.prepareStatement(inserton.prepareStatement(insertSQLSQL););stmt.setString(stmt.setString(11,, "Svetlin" "Svetlin"););stmt.setString(stmt.setString(22,, "Nakov" "Nakov"););stmt.setstmt.setDoubleDouble(3,(3, 25000.0 25000.0););stmt.executeUpdate();stmt.executeUpdate();

Page 23: Въведение в  JDBC

Prepared StatementPrepared Statements –s –ДДобритобритее практики практики

• Използвайте винаги, когато имате Използвайте винаги, когато имате заявки с параметри. Това е много по заявки с параметри. Това е много по добре от употребата на оператор добре от употребата на оператор "+""+"

• Използвайте именовани параметриИзползвайте именовани параметри

String insertSQL = "INSERT INTO employees(" +String insertSQL = "INSERT INTO employees(" + "first_name, last_name) VALUES(@fn, @ln)";"first_name, last_name) VALUES(@fn, @ln)";PreparedStatement stmt =PreparedStatement stmt = con.prepareStatement(insertSQL);con.prepareStatement(insertSQL);stmt.setString("@fn", "Svetlin");stmt.setString("@fn", "Svetlin");stmt.setString("@ln", "Nakov");stmt.setString("@ln", "Nakov");stmt.executeUpdate();stmt.executeUpdate();

Page 24: Въведение в  JDBC

Четене на автоматично Четене на автоматично генерирангенериран ключключ

• За сървъри, които потдържатЗа сървъри, които потдържат "auto "auto increment" increment" ключовеключове• НапримерНапример MS SQL Server, MySQL, ... MS SQL Server, MySQL, ...• JDBC JDBC има достъп до генерираната има достъп до генерираната

стойностстойност// // добавяме запис...добавяме запис...int rowCount = stmt.executeUpdate(int rowCount = stmt.executeUpdate( "INSERT INTO Messages(Msg) VALUES ('Test')","INSERT INTO Messages(Msg) VALUES ('Test')", Statement.RETURN_GENERATED_KEYSStatement.RETURN_GENERATED_KEYS););

// // ... и взимаме ключа... и взимаме ключаResultSet rs = stmt.ResultSet rs = stmt.getGeneratedKeysgetGeneratedKeys();();rs.next();rs.next();long primaryKey = rs.getLong(1);long primaryKey = rs.getLong(1);

Page 25: Въведение в  JDBC

Заявки за извикванеЗаявки за извикване• ИнтерфейсИнтерфейс CallableStatementCallableStatement• За изпълнение на съхранени За изпълнение на съхранени

процедурипроцедури• Приема входни параметриПриема входни параметри• Връща резултатВръща резултат

• Пример:Пример:CallableStatement callStmt =CallableStatement callStmt = dbCon.prepareCall("call SP_Insert_Msg(?,?)");dbCon.prepareCall("call SP_Insert_Msg(?,?)");callStmt.setString(1, msgText);callStmt.setString(1, msgText);callStmt.callStmt.registerOutParameterregisterOutParameter(2, Types.BIGINT);(2, Types.BIGINT);callStmt.executeUpdate();callStmt.executeUpdate();long id = callStmt.getLong(2);long id = callStmt.getLong(2);

Page 26: Въведение в  JDBC

Работа с транзакции вРабота с транзакции в JDBCJDBC

Page 27: Въведение в  JDBC

ТранзакцииТранзакции

• Транзакцията е набор от заявки, които Транзакцията е набор от заявки, които трябва или да се изпълнят всичките, трябва или да се изпълнят всичките, или нито еднаили нито една

• Обикновенно транзакцията има вида:Обикновенно транзакцията има вида:1.1.Отваряне на транзакцяиОтваряне на транзакцяи2.2.Изпълнение на няколко Изпълнение на няколко DMLDML заявки заявки3.3.Записване на транзакциятаЗаписване на транзакцията

• Ако някоя от заявките не се изпъни Ако някоя от заявките не се изпъни успешно цялата транзакция не се успешно цялата транзакция не се записвазаписва

Page 28: Въведение в  JDBC

ТранзакцииТранзакции

• Установяване на Установяване на JDBCJDBC в режим с в режим с транзакциитранзакции::• По подразбиране е режим По подразбиране е режим Auto-CommitAuto-Commit• Транзакциите се включват с Транзакциите се включват с setAutoCommit(false)setAutoCommit(false)

• В режим В режим auto-commit auto-commit всяка заявка се всяка заявка се изпълнява в отделна транзакцияизпълнява в отделна транзакция

• ПриПри auto-commit off, auto-commit off, промените няма да се промените няма да се запишат преди извикване на запишат преди извикване на commit()commit()

• Може да се върнем в Може да се върнем в auto-commitauto-commit режим с режим с setAutoCommit(truesetAutoCommit(true))

Page 29: Въведение в  JDBC

ТранзакцииТранзакции – – Пример Пример

• Ако не искаме промените да се запишат Ако не искаме промените да се запишат извиквамеизвикваме rollbackrollback()()

dbCon.setAutoCommit(false);dbCon.setAutoCommit(false);try {try { Statement stmt = con.createStatement();Statement stmt = con.createStatement(); stmt.executeUpdate("INSERT INTO Groupsstmt.executeUpdate("INSERT INTO Groups " +" + "VALUES"VALUES (101, '(101, 'AdministratorsAdministrators')");')"); stmt.executeUpdate("INSERT INTO Users " +stmt.executeUpdate("INSERT INTO Users " + "VALUES (NULL, 'Mary', 101)");"VALUES (NULL, 'Mary', 101)"); dbCon.commit();dbCon.commit();} catch (Exception ex) {} catch (Exception ex) { dbCon.rollback();dbCon.rollback(); throw ex;throw ex;}}

Page 30: Въведение в  JDBC

JDBCJDBC – добрите практики – добрите практики

Page 31: Въведение в  JDBC

Database Specific Database Specific PropertiesProperties

• Можете да предадете специфична Можете да предадете специфична информация към базата при информация към базата при установяване на връзката чрез обект установяване на връзката чрез обект PropertiesProperties

• Например при сървър Например при сървър Oracle:Oracle:Properties props = new java.util.Properties();Properties props = new java.util.Properties();

props.put("user", "scott");props.put("user", "scott");props.put("password", "tiger");props.put("password", "tiger");props.put("defaultRowPrefetch", "30");props.put("defaultRowPrefetch", "30");props.put("defaultBatchValue", "5");props.put("defaultBatchValue", "5");

Connection dbCon = DriverManger.getConnection(Connection dbCon = DriverManger.getConnection( "jdbc:oracle:thin:@hoststring", props); "jdbc:oracle:thin:@hoststring", props);

Page 32: Въведение в  JDBC

Изолация на транзакцииИзолация на транзакции

• Установяване на режим на изолация - Установяване на режим на изолация - setTransactionIsolation(setTransactionIsolation(levellevel))

Transaction LevelTransaction LevelPermitted PhenomenaPermitted Phenomena

ImpactImpactDirty Dirty

ReadsReadsNon-Repeatable Non-Repeatable

ReadsReadsPhantom Phantom

ReadsReads

TRANSACTION_NONETRANSACTION_NONE -- -- -- FASTESTFASTEST

TRANSACTION_READ_TRANSACTION_READ_UNCOMMITEDUNCOMMITED YESYES YESYES YESYES FASTESTFASTEST

TRANSACTION_READ_TRANSACTION_READ_COMMITEDCOMMITED NONO YESYES YESYES FASTFAST

TRANSACTION_REPEATRANSACTION_REPEATABLE_READTABLE_READ NONO NONO YESYES MEDIUMMEDIUM

TRANSACTION_SERIALITRANSACTION_SERIALIZABLEZABLE NONO NONO NONO SLOWSLOW

Page 33: Въведение в  JDBC

ResultSet ResultSet МетаданниМетаданни

• КласКлас ResultSetMetaDataResultSetMetaData• Използва се за извличане на Използва се за извличане на

метаданните (колони, типове, ... ) от метаданните (колони, типове, ... ) от ResultSetResultSet обектобект

ResultSet rs = stmt.executeQuery(ResultSet rs = stmt.executeQuery( "SELECT "SELECT ** FROM employees"); FROM employees");ResultSetMetaData rsm = rs.getMetaData();ResultSetMetaData rsm = rs.getMetaData();int number = int number = rsm.getColumnCount();rsm.getColumnCount();ffor (int i=0; i<number;or (int i=0; i<number; i++)i++) { { System.out.println(System.out.println(rsm.getColumnName(i)rsm.getColumnName(i)););}}

Page 34: Въведение в  JDBC

Почистване ненужните Почистване ненужните ресурсиресурси

• Експлицитното затваряне на обектите Експлицитното затваряне на обектите позволява на позволява на garbage collector-garbage collector-а да а да освободи максимално бързо освободи максимално бързо ресурситересурсите

• Унищожавайте Унищожавайте Statement Statement обектите обектите веднага след прочитането имведнага след прочитането им

• Използвайте Използвайте try-finally try-finally за да сте за да сте сигурни, че ресурсите ще се сигурни, че ресурсите ще се освободят, дори и при грешкаосвободят, дори и при грешка

Page 35: Въведение в  JDBC

Правилната заявкаПравилната заявка

• Използвайте Използвайте PreparedStatement PreparedStatement когато когато заявката ще се изпълнява повече от заявката ще се изпълнява повече от веднъж, или когато се конструира с веднъж, или когато се конструира с данни от потребителяданни от потребителя

• ИзползвайтеИзползвайте CallableStatementCallableStatement когато ви трябва резултат от много и когато ви трябва резултат от много и сложни заявки за да получите един сложни заявки за да получите един краен резултаткраен резултат

Page 36: Въведение в  JDBC

Изпращане на няколко Изпращане на няколко заявки наведнъжзаявки наведнъж

• Изпращайте едновременно няколко Изпращайте едновременно няколко заявки за да намалитезаявки за да намалите извикванията къмизвикванията към JDBC JDBC и да подобрите скоросттаи да подобрите скоростта::

• Можете да подобрите скоростта като Можете да подобрите скоростта като повишите броя записи, които се връщат в повишите броя записи, които се връщат в един пакет от сървъра към драйвераедин пакет от сървъра към драйвера

statement.addBatch("sql_query1");statement.addBatch("sql_query1");statement.addBatch("sql_query2");statement.addBatch("sql_query2");statement.addBatch("sql_query3");statement.addBatch("sql_query3");

statement.executeBatch();statement.executeBatch();

sstatement.setFetchSize(30);tatement.setFetchSize(30);

Page 37: Въведение в  JDBC

Оптимизирайте заявкитеОптимизирайте заявките

• ЛошоЛошо::

• ДобреДобре::

Statement stmt = con.createStatement();Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(ResultSet rs = stmt.executeQuery( ""SELECTSELECT ** FROMFROM EMPLOYEEEMPLOYEE WHEREWHERE IDID==11");");

Statement stmt = con.createStatement();Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(ResultSet rs = stmt.executeQuery( ""SELECTSELECT SALARYSALARY FROMFROM EMPLOYEEEMPLOYEE WHEREWHERE ID=1ID=1");");

Page 38: Въведение в  JDBC

Списък на Списък на JDBC JDBC драйверидрайвери (1)(1)

Списък на драйверите за някои Списък на драйверите за някои RDBMS RDBMS ::• IBM DB2IBM DB2

jdbc:db2://<HOST>:<PORT>/<DB>jdbc:db2://<HOST>:<PORT>/<DB>COM.ibm.db2.jdbc.app.DB2DriverCOM.ibm.db2.jdbc.app.DB2Driver

• JDBC-ODBC BridgeJDBC-ODBC Bridgejdbc:odbc:<DB>jdbc:odbc:<DB>sun.jdbc.odbc.JdbcOdbcDriver sun.jdbc.odbc.JdbcOdbcDriver

• Microsoft SQL ServerMicrosoft SQL Serverjdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>jdbc:weblogic:mssqlserver4:<DB>@<HOST>:<PORT>weblogic.jdbc.mssqlserver4.Driver weblogic.jdbc.mssqlserver4.Driver

• Oracle ThinOracle Thinjdbc:oracle:thin:@<HOST>:<PORT>:<SID>jdbc:oracle:thin:@<HOST>:<PORT>:<SID>oracle.jdbc.driver.OracleDriver oracle.jdbc.driver.OracleDriver

• PointBase Embedded ServerPointBase Embedded Serverjdbc:pointbase://embedded[:<PORT>]/<DB>jdbc:pointbase://embedded[:<PORT>]/<DB>com.pointbase.jdbc.jdbcUniversalDriver com.pointbase.jdbc.jdbcUniversalDriver

• CloudscapeCloudscapejdbc:cloudscape:<DB>jdbc:cloudscape:<DB>COM.cloudscape.core.JDBCDriver COM.cloudscape.core.JDBCDriver

• Cloudscape RMICloudscape RMIjdbc:rmi://<HOST>:<PORT>/jdbc:cloudscape:<DB>jdbc:rmi://<HOST>:<PORT>/jdbc:cloudscape:<DB>RmiJdbc.RJDriver RmiJdbc.RJDriver

• Firebird (JCA/JDBC Driver)Firebird (JCA/JDBC Driver)jdbc:firebirdsql:[//<HOST>[:<PORT>]/]<DB>jdbc:firebirdsql:[//<HOST>[:<PORT>]/]<DB>org.firebirdsql.jdbc.FBDriver org.firebirdsql.jdbc.FBDriver

Page 39: Въведение в  JDBC

Списък на Списък на JDBC JDBC драйверидрайвери (2)(2)

• IDS ServerIDS Serverjdbc:ids://<HOST>:<PORT>/conn?dsn='<ODBC_DSN_NAME>'jdbc:ids://<HOST>:<PORT>/conn?dsn='<ODBC_DSN_NAME>'ids.sql.IDSDriver ids.sql.IDSDriver

• Informix Dynamic ServerInformix Dynamic Serverjdbc:informix-sqli://<HOST>:<PORT>/<DB>:INFORMIXSERVER=<SERVER_NAME>jdbc:informix-sqli://<HOST>:<PORT>/<DB>:INFORMIXSERVER=<SERVER_NAME>com.informix.jdbc.IfxDriver com.informix.jdbc.IfxDriver

• InstantDB (v3.13 and earlier)InstantDB (v3.13 and earlier)jdbc:idb:<DB>jdbc:idb:<DB>jdbc.idbDriver jdbc.idbDriver

• InstantDB (v3.14 and later)InstantDB (v3.14 and later)jdbc:idb:<DB>jdbc:idb:<DB>org.enhydra.instantdb.jdbc.idbDriver org.enhydra.instantdb.jdbc.idbDriver

• Interbase (InterClient Driver)Interbase (InterClient Driver)jdbc:interbase://<HOST>/<DB>jdbc:interbase://<HOST>/<DB>interbase.interclient.Driver interbase.interclient.Driver

• Hypersonic SQL (v1.2 and earlier)Hypersonic SQL (v1.2 and earlier)jdbc:HypersonicSQL:<DB>jdbc:HypersonicSQL:<DB>hSql.hDriver hSql.hDriver

• Hypersonic SQL (v1.3 and later)Hypersonic SQL (v1.3 and later)jdbc:HypersonicSQL:<DB>jdbc:HypersonicSQL:<DB>org.hsql.jdbcDriver org.hsql.jdbcDriver

• Microsoft SQL Server (JTurbo Driver)Microsoft SQL Server (JTurbo Driver)jdbc:JTurbo://<HOST>:<PORT>/<DB>jdbc:JTurbo://<HOST>:<PORT>/<DB>com.ashna.jturbo.driver.Driver com.ashna.jturbo.driver.Driver

• Microsoft SQL Server (Sprinta Driver)Microsoft SQL Server (Sprinta Driver)jdbc:inetdae:<HOST>:<PORT>?database=<DB>jdbc:inetdae:<HOST>:<PORT>?database=<DB>com.inet.tds.TdsDriver com.inet.tds.TdsDriver

Page 40: Въведение в  JDBC

Списък на Списък на JDBC JDBC драйверидрайвери (3)(3)

• Microsoft SQL Server 2000 (Microsoft Driver)Microsoft SQL Server 2000 (Microsoft Driver)jdbc:microsoft:sqlserver://<HOST>:<PORT>[;DatabaseName=<DB>]jdbc:microsoft:sqlserver://<HOST>:<PORT>[;DatabaseName=<DB>]com.microsoft.jdbc.sqlserver.SQLServerDriver com.microsoft.jdbc.sqlserver.SQLServerDriver

• MySQL (MM.MySQL Driver)MySQL (MM.MySQL Driver)jdbc:mysql://<HOST>:<PORT>/<DB>jdbc:mysql://<HOST>:<PORT>/<DB>org.gjt.mm.mysql.Driver org.gjt.mm.mysql.Driver

• Oracle OCI 8iOracle OCI 8ijdbc:oracle:oci8:@<SID>jdbc:oracle:oci8:@<SID>oracle.jdbc.driver.OracleDriver oracle.jdbc.driver.OracleDriver

• Oracle OCI 9iOracle OCI 9ijdbc:oracle:oci:@<SID>jdbc:oracle:oci:@<SID>oracle.jdbc.driver.OracleDriver oracle.jdbc.driver.OracleDriver

• PostgreSQL (v6.5 and earlier)PostgreSQL (v6.5 and earlier)jdbc:postgresql://<HOST>:<PORT>/<DB>jdbc:postgresql://<HOST>:<PORT>/<DB>postgresql.Driver postgresql.Driver

• PostgreSQL (v7.0 and later)PostgreSQL (v7.0 and later)jdbc:postgresql://<HOST>:<PORT>/<DB>jdbc:postgresql://<HOST>:<PORT>/<DB>org.postgresql.Driver org.postgresql.Driver

• Sybase (jConnect 4.2 and earlier)Sybase (jConnect 4.2 and earlier)jdbc:sybase:Tds:<HOST>:<PORT>jdbc:sybase:Tds:<HOST>:<PORT>com.sybase.jdbc.SybDriver com.sybase.jdbc.SybDriver

• Sybase (jConnect 5.2)Sybase (jConnect 5.2)jdbc:sybase:Tds:<HOST>:<PORT>jdbc:sybase:Tds:<HOST>:<PORT>com.sybase.jdbc2.jdbc.SybDriver com.sybase.jdbc2.jdbc.SybDriver