Клас DriverManager
КласътDriverManagerе контролният слой на JDBC, следи всички налични драйвери и управлява установяването на връзки между базата данни и съответния драйвер.
Преди да се свържете със сървъра на базата данни, трябва да определите подходящия JDBC драйвер, който е *.jar файл. Следната таблица изброяваjdbc.driversза няколко СУБД.
Забележка: 1. Драйверите се изтеглят най-добре от уебсайта на производителите на СУБД. 2. Необходимо е да се вземат предвид особеностите на използването на връзката към СУБД сървъра. Например, ако използвате базата данни Derby в изключителен режим, т.е. като хранилище е по-добре да включите драйвера org.apache.derby.jdbc.EmbeddedDriver.
За да свържете драйвер, най-добре е да го поставите в една от поддиректориите на приложението и да го добавите към classpath. Когато използвате IDE за разработване на приложение, можете да свържете JDBC драйвера чрез интерфейса на средата за разработка.
DriverManager.registerDriver
За да кажете на JDBC Driver Manager кой драйвер да зареди, трябва да се изпълни една от следните команди:
- Class.forName(“пълно име на класа”)
- Class.forName(“пълно име на клас”).newInstance()
- DriverManager.registerDriver(ново „пълно име на клас“)
Командите са еднакви. Целта еclassloaderда зареди правилния драйвер. Например :
Зареждането на JDBC драйвера може да стане и по друг начин. Когато извиквате Java машина (JVM), можете да укажете името на класа JDBC драйвер в стойността на специалното системно свойствоjdbc.drivers:
В този случай, при първия опит за установяване на връзка с базата данни, мениджърът на драйвери автоматично ще зареди класапосочен в системното свойствоjdbc.drivers.
Изберете произволен метод, като се съсредоточите върху това дали ще трябва да преминете към друга СУБД в бъдеще. Ако е така, тогава вторият метод би бил за предпочитане. Особено за тези, които пишат програми за широката публика. И тя е склонна сама да избира какво да използва.
Забележка: ако получите грешка Няма наличен драйвер, докато изпълнявате програмата, това най-вероятно означава, че просто сте посочили неправилно пътя до драйвера в променливата CLASSPATH.
Класовете на JDBC драйвери са проектирани със статична секция за инициализация, в която се създава екземпляр на определен клас и се регистрира в класаDriverManagerпри зареждане. По този начин приложението не трябва да извиква директноDriverManager.registerDriver. Това извикване се прави автоматично от самия драйвер, когато се зареди класът на драйвера.
За да гарантира сигурността на управлението на драйверите, JDBCDriverManagerследи кой ClassLoader е заредил драйвера. При отваряне на връзка към сървъра на базата данни се използва само драйверът, или от локалната файлова система, или зареден от същия ClassLoader, който е заредил приложението, поискало връзката с базата данни.
Свързване към сървъра на базата данни
DriverManager.getConnection
Можете да установите връзки към база данни веднага след като регистрирате JDBC драйвера. За да направите това, извикайте методаDriverManager.getConnection, към който се предават параметрите за връзка с базата данни.DriverManagerанкетира всеки регистриран драйвер, за да определи кой може да установи тази връзка. Възможно е повече от един JDBC драйвер да може да установи връзка според URL параметрите. В случая е важнореда, в който се извършва това запитване, тъй като DriverManager ще използва първия драйвер, който отговори на URL адреса.
JDBC-ODBC-мост
Можете да получите достъп до сървъра на базата данни, като използвате JDBC - ODBC мост. Интерфейсната програма между JDBC драйвера и ODBC е разработена от JavaSoft в сътрудничество с InterSolv. Този "пакет" е имплементиран като клас JdbcOdbc.class (за Windows платформата JdbcOdbc.dll).
Когато използвате JDBC - ODBC, трябва да имате предвид, че в допълнение към JdbcOdbc библиотеките трябва да има специални драйвери (библиотеки), които осигуряват директен достъп до бази данни чрез стандартния ODBC интерфейс. По правило тези библиотеки са описани във файла ODBC.INI.
На вътрешно нивоJDBC-ODBC-Bridgeпреобразува Java методите в ODBC извиквания и по този начин прави възможно използването на който и да е от съществуващите ODBC драйвери, които сега са изобилни. Най-често обаче ODBC механизмът все още се използва поради своята гъвкавост и достъпност.
Характеристики на използването на JDBC-ODBC
JDBCDriverManagerе "гръбнакът" на JDBC архитектурата и основната му функция е много проста - да свърже Java програма и съответния JDBC драйвер и след това да "напусне играта". Рамката на драйвера ODBC беше взета като основа за JDBC поради нейната популярност сред ISV и потребителите. Но може да възникне легитимен въпрос - защо изобщо се нуждаете от JDBC? Няма ли да е по-лесно да се организира преден достъп до ODBC драйвери директно от Java? Колкото и да е странно, пътят през JDBC-ODBC-Bridge може да бъде много по-кратък. Какво общо има с:
- ODBC е базиран на C интерфейса и не може да се използва директно отJava. Обаждането от Java C код нарушава целостта на Java и нарушава сигурността.
- Тъй като Java няма указатели, но ODBC ги използва, пренасянето на ODBC C-API към Java-API не е желателно.
- Java API е необходим за постигане на напълно чисти Java решения. Когато се използва ODBC, ODBC драйверът и ODBC мениджърът трябва да бъдат инсталирани на всяка клиентска машина. В същото време JDBC драйверът е написан изцяло на Java и може лесно да бъде пренесен към всяка платформа.
Следният код демонстрира свързване към сървър на база данни с помощта на мостаjdbc-odbc-bridge: