~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 98BF7A7813DDA9F617CA272C91B8322D__1714013580 ✰
Заголовок документа оригинал.:
✰ Java Database Connectivity - Wikipedia ✰
Заголовок документа перевод.:
✰ Подключение к базе данных Java — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Java_Database_Connectivity ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/98/2d/98bf7a7813dda9f617ca272c91b8322d.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/98/2d/98bf7a7813dda9f617ca272c91b8322d__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 21:08:48 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 25 April 2024, at 05:53 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Подключение к базе данных Java — Википедия Jump to content

Подключение к базе данных Java

Из Википедии, бесплатной энциклопедии

Java Database Connectivity ( JDBC ) — это интерфейс прикладного программирования (API) для языка программирования Java , который определяет, как клиент может получить доступ к базе данных . Это технология доступа к данным на основе Java, используемая для подключения к базе данных Java. Это часть платформы Java Standard Edition от Oracle Corporation . Он предоставляет методы запроса и обновления данных в базе данных и ориентирован на реляционные базы данных . Мост JDBC- ODBC позволяет подключаться к любому источнику данных, доступному через ODBC, в среде хоста виртуальной машины Java (JVM).

JDBC
Разработчики) Корпорация Oracle
Стабильная версия
JDBC 4.3 / 21 сентября 2017 г. ( 21 сентября 2017 г. )
Операционная система Кросс-платформенный
Тип API доступа к данным
Веб-сайт Руководство по API JDBC

и реализация История

Sun Microsystems выпустила JDBC как часть Java Development Kit (JDK) 1.1 19 февраля 1997 года. [1] С тех пор он стал частью платформы Java Standard Edition (Java SE).

Классы JDBC содержатся в пакете Java. java.sql и javax.sql.

Начиная с версии 3.1, JDBC разрабатывается в рамках процесса сообщества Java . JSR 54 определяет JDBC 3.0 (включен в J2SE 1.4), JSR 114 определяет дополнения набора строк JDBC, а JSR 221 является спецификацией JDBC 4.0 (включен в Java SE 6). [2]

JDBC 4.1 указан в служебной версии 1 JSR 221. [3] и включен в Java SE 7. [4]

JDBC 4.2 указан в служебной версии 2 JSR 221. [5] и включен в Java SE 8. [6]

Последняя версия, JDBC 4.3, указана в техническом выпуске 3 JSR 221. [7] и включен в Java SE 9. [8]

JDBC-версии
JDBC-версия Java-версия Тип выпуска Дата выпуска
1.1 JDK 1.1 Основной 1997-02-19. [1]
3.0 J2SE 1.4 Основной 2002-05-09
4.0 Ява ЮВ 6 Основной 2006-12-11
4.1 Ява ЮВ 7 Обслуживание 2011-10-13
4.2 Ява ЮВ 8 Обслуживание 2014-03-04
4.3 Ява ЮВ 9 Обслуживание 2017-09-21

Функциональность [ править ]

Типы баз данных хоста, в которые Java может конвертировать с помощью функции
Тип данных Oracle setXXX() Методы
ЧАР setString()
ВАРЧАР2 setString()
ЧИСЛО setBigDecimal()
setBoolean()
setByte()
setShort()
setInt()
setLong()
setFloat()
setDouble()
ЦЕЛОЕ ЧИСЛО setInt()
ПЛАВАТЬ setDouble()
КЛОБ setClob()
BLOB-объект setBlob()
СЫРОЙ setBytes()
ЛОНГРО setBytes()
ДАТА setDate()
setTime()
setTimestamp()

Поскольку JDBC («Подключение к базе данных Java») представляет собой в основном набор определений и спецификаций интерфейсов, он позволяет существовать нескольким реализациям этих интерфейсов и использоваться одним и тем же приложением во время выполнения. API предоставляет механизм динамической загрузки правильных пакетов Java и их регистрации в диспетчере драйверов JDBC ( DriverManager). DriverManager используется как Connection фабрика для создания соединений JDBC.

Соединения JDBC поддерживают создание и выполнение операторов. Соединения JDBC поддерживают операторы обновления, такие как SQL CREATE , INSERT , UPDATE и DELETE , или операторы запроса, такие как SELECT . Кроме того, хранимые процедуры могут вызываться через соединение JDBC. JDBC представляет операторы, используя один из следующих классов:

  • Statement - Statementотправляется на сервер базы данных каждый раз. Другими словами, Statement методы выполняются с использованием операторов SQL для получения ResultSet объект, содержащий данные. [9]
  • PreparedStatementPreparedStatement является субинтерфейсом Statement интерфейс. [9] Оператор кэшируется, а затем путь выполнения заранее определяется на сервере базы данных, что позволяет эффективно выполнять его несколько раз. [9] PreparedStatement используется для выполнения предварительно скомпилированных операторов SQL. [9] Выполнение предварительно скомпилированных операторов повышает эффективность и производительность выполнения операторов. PreparedStatement часто используется для динамических операторов, когда некоторые входные параметры должны быть переданы в целевую базу данных. [10]

PreparedStatement позволяет динамическому запросу изменяться в зависимости от параметра запроса. [11]

  • CallableStatementCallableStatement является субинтерфейсом Statement интерфейс. [11] Он используется для выполнения хранимых процедур в базе данных. [11] [12] И входные, и выходные параметры должны передаваться в базу данных для хранимых процедур. [13]

Операторы обновления, такие как INSERT, UPDATE и DELETE, возвращают счетчик обновлений, указывающий количество затронутых строк в базе данных в виде целого числа. [13] Эти операторы не возвращают никакой другой информации.

Операторы запроса возвращают набор результатов строк JDBC. Набор результатов строк используется для обхода набора результатов . Отдельные столбцы в строке извлекаются либо по имени, либо по номеру столбца. В наборе результатов может быть любое количество строк. Результирующий набор строк содержит метаданные, описывающие имена столбцов и их типы.

Существует расширение базового API JDBC в javax.sql.

Соединения JDBC часто управляются через пул соединений , а не получаются непосредственно из драйвера. [14]

Примеры [ править ]

Когда приложению Java требуется соединение с базой данных, один из DriverManager.getConnection() методы используются для создания JDBC Connection. Используемый URL-адрес зависит от конкретной базы данных и драйвера JDBC. Он всегда начинается с протокола «jdbc:», но все остальное зависит от конкретного поставщика.

Подключение   подключения   =   DriverManager  .   getConnection  ( 
      "jdbc:somejdbcvendor:другие данные, необходимые некоторым поставщикам jdbc"  , 
      "myLogin"  , 
      "myPassword"  ); 
  try   { 
      /* здесь вы используете соединение */ 
 }   finally   { 
     //Важно закрыть соединение, когда вы закончите с ним, 
     try   {  
         conn  .   закрывать  (); 
      }   catch   (  Throwable   e  )   {   /* Распространить исходное исключение 
 вместо того, которое вы хотите только что зарегистрировать */  
         logger  .   alert  (  "Не удалось закрыть соединение JDBC"  ,   e  ); 
      } 
 } 

Начиная с Java SE 7, вы можете использовать оператор Java try-with-resources, чтобы упростить приведенный выше код:

try   (  Connection   conn   =   DriverManager  .  getConnection  ( 
      "jdbc:somejdbcvendor:other data, необходимые некоторому поставщику jdbc"  , 
      "myLogin"  , 
      "myPassword"  ))   { 
      /* вы используете соединение здесь */ 
 }    // виртуальная машина позаботится об этом о закрытии соединения 

Как только соединение будет установлено, Statement можно создать.

попробуйте   (  Заявление   stmt   =   conn  .  createStatement  ())   { 
     stmt  .   ExecuteUpdate  (  "INSERT INTO MyTable(name) VALUES ("мое имя")"  ); 
  } 

Обратите внимание, что Connectionс, Statementпесок ResultSetОни часто связывают ресурсы операционной системы , такие как сокеты или файловые дескрипторы . В случае Connections к удаленным серверам баз данных, на сервере привязываются дополнительные ресурсы, например, курсоры для открытых в данный момент ResultSetс. Очень важно close()любой объект JDBC, как только он сыграл свою роль; На сбор мусора не следует полагаться. Вышеупомянутая конструкция try-with-resources представляет собой шаблон кода, который позволяет избежать этого.

Данные извлекаются из базы данных с помощью механизма запросов к базе данных. В приведенном ниже примере показано создание инструкции и выполнение запроса.

try   (  Statement   stmt   =   conn  .  createStatement  (); 
     ResultSet   rs   =   stmt.executeQuery  )  (  «  SELECT * FROM MyTable»  ) 
 )   { 
     while   (  rs  .  next  ()   { 
         int   numColumns   =   rs  .   ПолучитьМетаДанные  ().   ПолучитьКолумнКаунт  (); 
          for   (  int   i   =   1  ;   i   <=   numColumns  ;   i  ++  )   { 
            // Номера столбцов начинаются с 1. 
            // Кроме того, в наборе результатов существует множество методов, возвращающих 
            // столбец как определенный тип.   Обратитесь к документации Sun 
            за списком допустимых преобразований. 
             Система  .   вне  .   println  (   "COLUMN"   +   i   +   " = "   +   rs  .  getObject  (  i  )); 
          } 
     } 
 } 

Следующий код является примером PreparedStatement запрос, который использует conn и класс из первого примера:

try   (  PreparedStatement   ps   = 
     conn.prepreStatement  )  (  "SELECT i.*, j  .* FROM Omega i, Zappa j WHERE i.name = ? AND j.num = ?"  ) 
 {   // 
     В подготавливаемом операторе SQL каждый Вопросительный знак — это заполнитель 
     , // который необходимо заменить значением, которое вы указываете при вызове метода set. 
      // Следующие два вызова метода заменяют два заполнителя;   первое 
     // заменяется строковым значением, а второе — целочисленным значением. 
      пс  .   setString  (  1  ,   «Бедный Йорик»  ); 
      пс  .   setInt  (  2  ,   8008  ); 

      // ResultSet, rs, передает результат выполнения оператора SQL. 
      // Каждый раз, когда вы вызываете rs.next(), внутренний указатель строки или курсор 
     // перемещается на следующую строку результата.   Курсор изначально 
     располагается // перед первой строкой. 
      попробуйте   (  ResultSet   rs   =   ps.executeQuery  .  (  ))   { 
         как   (  rs.next  numColumns  в  ())   { 
             int   время   =   rs  то   ПолучитьМетаДанные  ().   ПолучитьКолумнКаунт  (); 
              for   (  int   i   =   1  ;   i   <=   numColumns  ;   i  ++  )   { 
                 // Номера столбцов начинаются с 1. 
                 // Кроме того, в наборе результатов существует множество методов, возвращающих 
                 // столбец как определенный тип.   Обратитесь к документации Sun 
                 за списком допустимых преобразований. 
                Система  .   вне  .   println  (  "COLUMN"   +   i   +   " = "   +   rs  .  getObject  (  i  )); 
              }   // for 
         }   // while 
     }   // пытаемся 
 }   // пытаемся 

Если операция с базой данных завершается неудачно, JDBC выдает ошибку. SQLException. Обычно мало что можно сделать, чтобы исправить такую ​​ошибку, кроме как записать ее в журнал с максимально подробным описанием. Рекомендуется, чтобы SQLException быть преобразовано в исключение домена приложения (непроверяемое), что в конечном итоге приводит к откату транзакции и уведомлению пользователя.

Следующий код является примером транзакции базы данных :

логическое   значение autoCommitDefault   =   conn  .   getAutoCommit  (); 
  попробуй   { 
     подключ  .   setAutoCommit  (  ложь  ); 

      /* Здесь вы выполняете инструкции против conn транзакционно */ 

     conn  .   совершить  (); 
  }   catch   (  Throwable   e  )   { 
     попробуйте   {   conn  .   откат  ();    }   catch   (  Throwable   e  )   {   logger  .   alert  (  "Не удалось откатить транзакцию"  ,   e  );    } 
     бросить   е  ; 
  }   наконец   { 
     попробуйте   {   conn  .   setAutoCommit  (  autoCommitDefault  );    }   catch   (  Throwable   e  )   {   logger  .   alert  (  "Не удалось восстановить настройки AutoCommit"  ,  e  );    } 
 } 

Для примера CallableStatement (для вызова хранимых процедур в базе данных) см. документацию JDBC API Guide .

импортировать   java.sql.Connection  ; 
  импортировать   java.sql.DriverManager  ; 
  импортировать   java.sql.Statement  ; 

  общественный   класс   Mydb1   { 
    статический   строки   URL-адрес   =   "jdbc:mysql://localhost/mydb"  ; 

     public   static   void   main  (  String  []   args  )   { 
       try   { 
         Class  .   forName  (  "com.mysql.jdbc.Driver"  ); 

          Подключение   подключения   =   DriverManager  .   getConnection  (  URL  ,   «корень»  ,   «корень»  ); 
          Заявление   stmt   =   conn  .   createStatement  (); 
      
          String   sql   =   "ВСТАВИТЬ В ЗНАЧЕНИЯ emp1 ('pctb5361', 'кирил', 'джон', 968666668)"  ; 
          стмт  .   выполнитьОбновление  (  SQL  ); 
           
          Система  .   вне  .   println  (  "В таблицу добавлены записи..."  ); 
        }   catch   (  Исключение   е  )   { 
         е  .   печатьStackTrace  (); 
        } 
    } 
 } 

Драйверы JDBC [ править ]

на стороне клиента Драйверы JDBC — это адаптеры (устанавливаемые на клиентском компьютере, а не на сервере), которые преобразуют запросы от программ Java в протокол, понятный СУБД.

Типы [ править ]

Коммерческие и бесплатные драйверы обеспечивают подключение к большинству серверов реляционных баз данных. Эти драйверы относятся к одному из следующих типов:

  • Введите 1 , который вызывает собственный код локально доступного драйвера ODBC. (Примечание. В JDBC 4.2 мост JDBC-ODBC был удален. [15] )
  • Тип 2 , который вызывает собственную библиотеку поставщика базы данных на стороне клиента. Затем этот код обращается к базе данных по сети.
  • Тип 3 — драйвер чистой Java, который взаимодействует с промежуточным программным обеспечением на стороне сервера, которое затем взаимодействует с базой данных.
  • Тип 4 — драйвер чистой Java, использующий собственный протокол базы данных.

Обратите также внимание на тип, называемый внутренним драйвером JDBC — драйвер, встроенный в JRE в базы данных SQL с поддержкой Java. Он используется для хранимых процедур Java . Это не вписывается в приведенную выше схему классификации, хотя, скорее всего, будет напоминать драйвер либо типа 2, либо типа 4 (в зависимости от того, реализована ли сама база данных на Java или нет). Примером этого является драйвер KPRB (Kernel Program Bundled). [16] поставляется с СУБД Oracle . «jdbc:default:connection» предлагает относительно стандартный способ создания такого соединения (по крайней мере, база данных Oracle и Apache Derby поддерживают его). Однако в случае внутреннего драйвера JDBC клиент JDBC фактически работает как часть базы данных, к которой осуществляется доступ, и поэтому может обращаться к данным напрямую, а не через сетевые протоколы.

Источники [ править ]

  • Oracle предоставляет список некоторых драйверов и поставщиков JDBC.
  • Simba Technologies поставляет SDK для создания пользовательских драйверов JDBC для любого пользовательского/собственного реляционного источника данных.
  • CData Software поставляет драйверы JDBC типа 4 для различных приложений, баз данных и веб-API. [17]
  • Драйверы JDBC RSSBus Type 4 для приложений, баз данных и веб-сервисов [18]
  • DataDirect Technologies предоставляет полный набор быстрых драйверов JDBC типа 4 для всех основных баз данных, которые они рекламируют как типа 5. [19]
  • Программное обеспечение IDS предоставляет драйвер JDBC типа 3 для одновременного доступа ко всем основным базам данных. Поддерживаемые функции включают кэширование набора результатов, SSL-шифрование, собственный источник данных, dbShield.
  • JDBaccess — это библиотека персистентности Java для MySQL и Oracle , которая определяет основные операции доступа к базе данных с помощью простого в использовании API поверх JDBC.
  • JNetDirect предоставляет набор высокопроизводительных драйверов JDBC, полностью сертифицированных Sun J2EE.
  • JDBCR4 — это сервисная программа, написанная Скоттом Клементом для обеспечения доступа к JDBC из RPG на IBM i . [20]
  • HSQLDB — это СУБД с драйвером JDBC, доступная по лицензии BSD.
  • SchemaCrawler [21] — это API с открытым исходным кодом, который использует JDBC и делает метаданные базы данных доступными в виде простых старых объектов Java (POJO).

См. также [ править ]

Цитаты [ править ]

  1. ^ Перейти обратно: а б «Sun Ships JDK 1.1 — Javabeans включены» . www.sun.com . Сан Микросистемс . 19 февраля 1997 г. Архивировано из оригинала 10 февраля 2008 г. Проверено 15 февраля 2010 г. 19 февраля 1997 г. — JDK 1.1 [...] теперь доступен [...]. Этот выпуск JDK включает в себя: [...] новые надежные функции, включая JDBC для подключения к базе данных.
  2. ^ Версия спецификации JDBC API: 4.0 .
  3. ^ «Программа Java Community Process (SM) — Communityprocess — mrel» . jcp.org . Проверено 22 марта 2018 г.
  4. ^ «JDBC 4.1» . docs.oracle.com . Проверено 22 марта 2018 г.
  5. ^ «Программа Java Community Process (SM) — Communityprocess — mrel» . jcp.org . Проверено 22 марта 2018 г.
  6. ^ «JDBC 4.2» . docs.oracle.com . Проверено 22 марта 2018 г.
  7. ^ «Программа Java Community Process (SM) — Communityprocess — mrel» . jcp.org . Проверено 22 марта 2018 г.
  8. ^ «java.sql (Java SE 9 и JDK 9)» . docs.oracle.com . Проверено 22 марта 2018 г.
  9. ^ Перейти обратно: а б с д Бай 2022 , с. 74.
  10. ^ Bai 2022 , стр. 122–124, §4.2.3.5 Подробнее о методах выполнения.
  11. ^ Перейти обратно: а б с Bai 2022 , стр. 72–74, §3.2 Компоненты и архитектура JDBC.
  12. ^ Хорстманн 2022 , §5.5.3 Экранирование SQL.
  13. ^ Перейти обратно: а б Bai 2022 , стр. 122–124, §4.2.3.5 Компоненты и архитектура JDBC.
  14. ^ Бай 2022 , с. 83, §3.5.1 Источник данных JDBC.
  15. ^ «Java JDBC API» . docs.oracle.com . Проверено 22 марта 2018 г.
  16. ^ Гринвальд, Рик; Стаковяк, Роберт; Стерн, Джонатан (1999). Oracle Essentials: База данных Oracle 10g . Серия Essentials (3-е изд.). Севастополь, Калифорния: O'Reilly Media, Inc. (опубликовано в 2004 г.). п. 318. ИСБН  9780596005856 . Проверено 3 ноября 2016 г. Драйвер JDBC в базе данных (JDBC KPRB) [:] Java-код использует версию JDBC KPRB (Kernel Program Bundled) для доступа к SQL на том же сервере.
  17. ^ «Драйверы JDBC — программное обеспечение CData» . Программное обеспечение CData . Проверено 22 марта 2018 г.
  18. ^ «Драйверы JDBC — программное обеспечение CData» . Программное обеспечение CData . Проверено 22 марта 2018 г.
  19. ^ «Новый драйвер JDBC типа 5 — DataDirect Connect» .
  20. ^ «Доступ к внешним базам данных из RPG с помощью JDBCR4, суть дела» . 28 июня 2012 года . Проверено 12 апреля 2016 г.
  21. ^ Суале Фатехи. «СхемаКраулер» . Гитхаб .

Ссылки [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 98BF7A7813DDA9F617CA272C91B8322D__1714013580
URL1:https://en.wikipedia.org/wiki/Java_Database_Connectivity
Заголовок, (Title) документа по адресу, URL1:
Java Database Connectivity - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)