Подключение Java к оракулу

Обновлено: 02.07.2024

Как подключиться к базе данных Oracle из Java. Программа с использованием JDBC API часто требуется многим Java-программистам, хотя существует множество доступных сред, которые упрощают разработку JDBC, например, Hibernate, Spring JdbcTempate и многие другие, создавая Java-программы для подключение к базе данных oracle из старой доброй Java по-прежнему остается самым простым и быстрым методом тестирования и отладки подключения к базе данных. Программа подключения к базе данных также является распространенным упражнением по программированию на Java во многих курсах программирования на Java в школах, колледжах и различных учебных заведениях.

Мы рассмотрели некоторые передовые концепции и рекомендации по JDBC в моих предыдущих статьях, таких как Почему вам следует использовать PreparedStatement в Java и 4 совета по производительности JDBC для приложений Java, которые могут вам понравиться, если вы работаете с более продвинутый уровень. Эта простая Java-программа предназначена для новичков в Java, которые только начали изучать JDBC API.

Если вам нравится читать учебные пособия по базе данных, вы можете найти разницу между усечением и удалением, 10 примеров запросов SQL SELECT и способы управления транзакциями базы данных полезными и интересными.

Как подключить базу данных Oracle из программы Java с помощью JDBC — пример кода

Как подключиться База данных Oracle из Java-программы с примером

Вот полный пример кода Java-программы для подключения к базе данных Oracle с помощью JDBC. Эта Java-программа будет подключаться к базе данных Oracle и печатать текущую дату из «двойной» системной таблицы. Кстати, прежде чем запускать эту Java-программу для подключения к базе данных Oracle, убедитесь, что ваш сервер базы данных Oracle работает и у вас есть тонкий драйвер JDBC в ваших путях к классам, например ojdbc6.jar или ojdbc6_g.jar.

импортировать java.sql.Connection ;
импортировать java.sql.DriverManager ;
импортировать java.sql.PreparedStatement ;
импортировать java.sql.ResultSet ;
импортировать java.sql.SQLException ;
импортировать java.util.Properties ;

/**
* Простая программа на Java для подключения к базе данных Oracle с помощью тонкого драйвера Oracle JDBC
* Перед запуском этой программы убедитесь, что в вашем пути к классам есть тонкий драйвер Oracle JDBC
>* @author
*/

открытый класс OracleJdbcExample

public static void main ( String args []) выдает SQLException <
//URL сервера базы данных Oracle
String url = "jdbc:oracle:thin:@localhost :1632:DEVROOT32" ;

//свойства для создания подключения к базе данных Oracle
Properties props = new Properties () ;
реквизит. setProperty("Пользователь", "Скотт");
реквизит. setProperty("пароль", "тигр");

//создание подключения к базе данных Oracle с помощью JDBC
Connection conn = DriverManager. getConnection ( URL, реквизиты );

String sql = "выбрать sysdate как current_day из двойного";

//создание объекта PreparedStatement для выполнения запроса
PreparedStatement preStatement = conn. подготовить выписку (sql);

Результат набора результатов = preStatement. выполнитьЗапрос() ;

в то время как (результат. следующий ()) <
System. вне . println("Текущая дата от Oracle:" + result.getString("current_day"));
>
Система. вне . println("сделано");

Вывод:
Текущая дата от Oracle: 2012 -04- 12 17 : 13 : 49
сделано

Ошибка и исключение при подключении базы данных Oracle из программы Java:

Эта ошибка возникает, когда имя пользователя и пароль, предоставленные программе Java для подключения к базе данных Oracle, неверны.

Эта ошибка возникает, когда тонкий драйвер JDBC для соответствующей версии Oracle отсутствует в пути к классам. например ojdbc6.jar или ojdbc6_g.jar (скомпилированный с помощью javac -g с отладочной информацией) для Oracle 11g.

Кроме того, при чтении данных из ResultSet убедитесь, что вы используете правильный индекс столбца, чтобы избежать исключения в потоке "main" java.sql.SQLException: неверный индекс столбца, который возникает, когда вы используете недопустимый индекс, например нуль, для доступа к ResultSet при различных получениях и установить методы.

В этом примере программы на Java мы увидели, как подключиться к базе данных Oracle с помощью тонкого драйвера JDBC. С помощью тонкого драйвера гораздо проще подключиться к базе данных oracle, поскольку вам не нужно создавать источники данных, как если бы вы использовали драйвер JDBC ODBC. Дайте мне знать, если у вас возникнут проблемы при подключении к базе данных Oracle из Java-программы. Еще один момент, на который стоит обратить внимание, — это подключение к базе данных Oracle с помощью SSL из программы Java, которое можно увидеть в другом учебнике по Java.

21 комментарий:

Есть ли разница при подключении к базе данных Oracle 10g или 11g? нужно ли менять драйвер JDBC для базы данных Oracle 11g?

Разве нам не нужно загружать драйвер с помощью Class.forName("driver")

но как установить тонкий драйвер в пути к классам

Класс.forName("драйвер") не нужен в Java 6 и выше :)

когда я пишу код строки для регистрации драйвера
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());

я нашел вот такую ​​ошибку

Конструктор JdbcOdbcDriver() не является

доступно из-за ограничений на требуемую библиотеку

Загрузите файл ojdbc6.jar и импортируйте его в путь к классам. Это решит проблему.

Я установил путь к классу для драйвера в .bashrc, но все равно пишет "Подходящий драйвер не найден"

Как установить путь к классам ojdbc6.jar в ОС Solaris. Люди помогите пожалуйста..

C:\Users\Sarveshwar\Desktop>javac -cp E:\app\Sarveshwar\product\11.2.0\dbhome_1\jdbc\lib\ojdbc5_2.jar;C:\User\Sarveshwar\Desktop OracleJdbcExample
ошибка: имена классов "OracleJdbcExample" принимаются только в том случае, если обработка аннотаций явно запрошена
1 ошибка

C:\Users\Sarveshwar\Desktop>javac -cp E:\app\Sarveshwar\product\11.2.0\dbhome_1\jdbc\lib\ojdbc5_2.jar;C:\User\Sarveshwar\Desktop OracleJdbcExample
ошибка: имена классов "OracleJdbcExample" принимаются только в том случае, если обработка аннотаций явно запрошена
1 ошибка

C:\Users\Sarveshwar\Desktop>javac -cp E:\app\Sarveshwar\product\11.2.0\dbhome_1\jdbc\lib\ojdbc5_2.jar;C:\User\Sarveshwar\Desktop OracleJdbcExample
ошибка: имена классов "OracleJdbcExample" принимаются только в том случае, если обработка аннотаций явно запрошена
1 ошибка

C:\Users\Sarveshwar\Desktop>java OracleJdbcExample
Исключение в потоке "main" java.sql.SQLException: не найден подходящий драйвер для jdbc:oracle:thin:@localhost:1632:DEVROOT32
в java.sql.DriverManager.getConnection(неизвестный источник)
в java.sql.DriverManager.getConnection(неизвестный источник)
в OracleJdbcExample.main(OracleJdbcExample.java:23)

Мне не удается подключиться с помощью тонкого драйвера JDBC. Это дает мне ошибку ORA-01756 «Строка в кавычках не завершена должным образом», что не кажется актуальным. Я только пытаюсь установить соединение с базой данных и не выполняю никаких операторов SQL. Есть мысли?

импорт java.lang.Exception;
импорт java.sql.Connection;
импорт java.sql.DatabaseMetaData;
импорт java.sql.DriverManager;
импорт java. sql.SQLException;
открытый класс java
static String url ="jdbc:odbc:vinn";
static Connection con =null;
public static void main(String[] args ) выдает SQLException Connection con =getOracleJDBCConnection();
if(con!=null)
System.out.println("установлено соединение");
DatabaseMetaData meta=con.getMetaData();
System.out.println("Имя драйвера:"+meta.getDriverName());
System.out.println("Версия драйвера:"+meta.getDriverVersion());
>
elseSystem.out.println("не удалось найти соединение");
>
>
public static Connection getOracleJDBCConnection()
tryClass.forName("sun. jdbc.odbc.JdbcOdbcDriver");
>
catch(java.lang.ClassNotFoundException e)
System.err.println("ClassNotFoundException:");
System.err. println(e.getMessage());
>
trycon=DriverManager.getConnectio n(url);
>
catch(SQLException ex)
System.err.println("SQLException:" + ex.getMessage());
>
вернуть кон;
>>

когда я компилирую эту программу, возникает ошибка, т.е. не удается найти sysmbol java.lang в 29-й строке. это программа для проверки имени драйвера соединения jdbc и его версии.

как решить эту проблему.
я компилирую эту программу в cmd

Если вы используете eclipse, измените свойства программы на jdk 1.6/7

Если у кого-то возникнут проблемы с поиском файла ojdbc6.jar, например. не могу скачать из интернета или интернет недоступен. Всегда помните, что одна копия этого JAR-файла доступна, когда вы устанавливаете Oracle Client или Server на свой компьютер. Вы можете найти этот JAR в следующем месте:

Кроме того, URL-адрес подключения JDBC для Oracle может принимать различные форматы, например. он может включать имя службы или SID. Ниже приведены некоторые допустимые комбинации URL-адресов Oracle JDBC:

Можете ли вы сказать мне, почему я получаю сообщение об ошибке ниже. Когда я запустил программу, я получил эту ошибку.

открытый класс DatabaseTest

public static void main(String[] args)

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521:orcle","system","Infy1234");

> поймать (ClassNotFoundException e)

// TODO Автоматически сгенерированный блок catch

> поймать (SQLException e)

// TODO Автоматически сгенерированный блок catch

java.sql.SQLException: исключение ввода-вывода: сетевому адаптеру не удалось установить соединение

в java.sql.DriverManager.getConnection(неизвестный источник)

в java.sql.DriverManager.getConnection(неизвестный источник)

Пожалуйста, проверьте правильность хоста и порта. Вы можете попробовать ping/telnet на этом хосте и порте с вашего хоста и посмотреть, что он скажет.

Там написано "Должен быть указан IP-адрес". Все еще получил ту же ошибку. хост и порт указаны правильно.

Подключение con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcle","system","Infy1234");

Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcle","system","Infy1234");

Соединение находится на моем локальном хосте. все еще я получаю ту же ошибку. Пожалуйста, дайте решение.

@Bapan, сообщение «Сетевому адаптеру не удалось установить соединение» исчезло или оно все еще существует. Что такое «оркл» в вашем URL-адресе подключения. Вы также должны проверить, работает ли какой-либо из следующих форматов:
jdbc:oracle:thin:user/xxxx@server:port:SID
jdbc:oracle:thin:user/xxxx@:SID
jdbc:oracle:thin:user/xxxx@//server:port/XE

даже если я установил classpath на ojdbc6, я получаю сообщение об ошибке sun.jdbc.odbc.JdbcOdbcDriver not foun

В Java8, как подключить базу данных сейчас, после удаления драйвера JBDC ODBC.

Во-первых, вам нужно установить соединение с источником данных, который вы хотите использовать. Источником данных может быть СУБД, устаревшая файловая система или какой-либо другой источник данных с соответствующим драйвером JDBC. Обычно приложение JDBC подключается к целевому источнику данных с помощью одного из двух классов:

DriverManager: этот полностью реализованный класс подключает приложение к источнику данных, указанному URL-адресом базы данных. Когда этот класс впервые пытается установить соединение, он автоматически загружает все драйверы JDBC 4.0, найденные в пути к классу. Обратите внимание, что ваше приложение должно вручную загружать все драйверы JDBC до версии 4.0.

DataSource : этот интерфейс предпочтительнее DriverManager, поскольку он позволяет сделать детали базового источника данных прозрачными для вашего приложения. Свойства объекта DataSource устанавливаются таким образом, чтобы он представлял конкретный источник данных. Дополнительные сведения см. в разделе «Соединение с объектами DataSource». Дополнительную информацию о разработке приложений с помощью класса DataSource см. в последней версии Учебника по Java EE.

Примечание. В примерах в этом руководстве используется класс DriverManager вместо класса DataSource, поскольку он проще в использовании, а в примерах не требуются функции класса DataSource.

Эта страница охватывает следующие темы:

Использование класса DriverManager

Подключение к вашей СУБД с помощью класса DriverManager включает вызов метода DriverManager.getConnection . Следующий метод JDBCTutorialUtilities.getConnection устанавливает соединение с базой данных:

Метод DriverManager.getConnection устанавливает соединение с базой данных. Для этого метода требуется URL-адрес базы данных, который зависит от вашей СУБД. Ниже приведены некоторые примеры URL-адресов баз данных:

MySQL: jdbc:mysql://localhost:3306/ , где localhost — это имя сервера, на котором размещена ваша база данных, а 3306 — это номер порта

Java DB: jdbc:derby:testdb;create=true , где testdb — это имя базы данных для подключения, а create=true указывает СУБД создать базу данных.

Примечание. Этот URL-адрес устанавливает соединение с базой данных со встроенным драйвером Java DB. Java DB также включает драйвер сетевого клиента, который использует другой URL-адрес.

Этот метод указывает имя пользователя и пароль, необходимые для доступа к СУБД с помощью объекта Properties.

Примечание:

Обычно в URL-адресе базы данных вы также указываете имя существующей базы данных, к которой хотите подключиться. Например, URL-адрес jdbc:mysql://localhost:3306/mysql представляет собой URL-адрес базы данных MySQL с именем mysql. В примерах в этом руководстве используется URL-адрес, в котором не указана конкретная база данных, поскольку в примерах создается новая база данных.

В предыдущих версиях JDBC для получения соединения сначала нужно было инициализировать драйвер JDBC, вызвав метод Class.forName . Для этих методов требуется объект типа java.sql.Driver . Каждый драйвер JDBC содержит один или несколько классов, реализующих интерфейс java.sql.Driver. Драйверы для Java DB — org.apache.derby.jdbc.EmbeddedDriver и org.apache.derby.jdbc.ClientDriver, а для MySQL Connector/J — com.mysql.cj.jdbc.Driver. См. документацию вашего драйвера СУБД, чтобы получить имя класса, реализующего интерфейс java.sql.Driver .

Все драйверы JDBC 4.0, найденные в вашем пути к классам, загружаются автоматически. (Однако вы должны вручную загружать все драйверы, предшествующие JDBC 4.0, с помощью метода Class.forName .)

Метод возвращает объект Connection, представляющий соединение с СУБД или определенной базой данных. Запросите базу данных через этот объект.

Указание URL-адресов подключения к базе данных

URL-адрес подключения к базе данных — это строка, которую драйвер JDBC вашей СУБД использует для подключения к базе данных. Он может содержать такую ​​информацию, как место поиска базы данных, имя базы данных для подключения и свойства конфигурации. Точный синтаксис URL-адреса подключения к базе данных определяется вашей СУБД.

URL-адреса подключения к базе данных Java DB

Ниже приведен синтаксис URL-адреса подключения к базе данных для Java DB:

  • subsubprotocol указывает, где Java DB должна искать базу данных: в каталоге, в памяти, в пути к классу или в файле JAR. Обычно его не указывают.
  • databaseName – это имя базы данных, к которой нужно подключиться.
  • attribute=value представляет необязательный список атрибутов, разделенных точкой с запятой. Эти атрибуты позволяют указывать Java DB для выполнения различных задач, включая следующие:
    • Создайте базу данных, указанную в URL-адресе подключения.
    • Зашифровать базу данных, указанную в URL-адресе подключения.
    • Укажите каталоги для хранения журналов и данных трассировки.
    • Укажите имя пользователя и пароль для подключения к базе данных.

    Для получения дополнительной информации см. Руководство разработчика по Java DB и Справочное руководство по Java DB в Технической документации по Java DB.

    URL-адрес базы данных MySQL Connector/J

    Ниже приведен синтаксис URL-адреса подключения к базе данных для MySQL Connector/J:

    Это учебное пособие по JDBC поможет вам написать код Java для установления соединения базы данных с сервером базы данных Oracle — первый шаг к тому, чтобы приложения Java работали с одной из самых популярных систем баз данных. Предположим, у вас уже установлена ​​версия базы данных Oracle, например Oracle Database Express Edition.

    Содержание:

    1. Скачать библиотеку драйверов JDBC для базы данных Oracle

    Чтобы заставить Java-программу взаимодействовать с базой данных Oracle, нам нужно, чтобы драйвер Oracle JDBC (OJDBC) присутствовал в пути к классам. Щелкните здесь, чтобы перейти на страницу загрузки драйвера Oracle JDBC. Затем выберите версию драйвера JDBC, которая соответствует серверу базы данных Oracle и JDK, установленным на вашем компьютере. В настоящее время существует две основные версии OJDBC:

    – OJDBC 8: сертифицирован для JDK 8 для баз данных Oracle 11g и 12c.

    – OJDBC 10: сертифицирован для JDK 10 для баз данных Oracle 18c и 19c.

    ПРИМЕЧАНИЕ. Oracle требует, чтобы пользователи имели учетную запись Oracle для загрузки, поэтому вам может потребоваться зарегистрировать учетную запись, если у вас ее нет.

    Извлеките загруженный архив и поместите файл ojdbc10.jar в путь к классам вашего проекта, как обычно, используя любой файл jar.

    Если вы используете Maven, добавьте в файл pom.xml следующую зависимость:

    2. URL базы данных JDBC для базы данных Oracle

    • тип драйвера может быть thin, oci или kprb .
    • база данных может иметь вид имя_хоста:порт:SID или запись TNSNAMES, указанная в файле tnsnames.ora, который находится на клиентском компьютере. Порт по умолчанию — 1521.

    Тип драйвера

    Использование

    тип драйвера

    Тонкий драйвер

    Для использования на стороне клиента без установки Oracle

    Драйвер OCI

    Для использования на стороне клиента с установкой Oracle

    Тонкий драйвер на стороне сервера

    То же, что и тонкий драйвер, но запускается внутри сервера Oracle для доступа к удаленному серверу

    Внутренний драйвер на стороне сервера

    Выполняется внутри целевого сервера

    Согласно Oracle, если ваш клиент JDBC и сервер базы данных Oracle работают на одном компьютере, вам следует использовать драйвер OCI, так как он намного быстрее тонкого драйвера (драйвер OCI может использовать межпроцессное взаимодействие< /i> — IPC, тогда как тонкий драйвер может использовать только сетевое подключение).

    Например, если вы хотите подключить пользователя Tiger с паролем scott к базе данных Oracle с SID productDB через порт по умолчанию на хосте dbHost с помощью тонкого драйвера, вы можете создать URL-адрес следующим образом:

    При использовании драйвера OCI:

    Если у вас есть запись TNSNAMES productionDB в файле tnsnames.ora, вы можете построить URL-адрес следующим образом:

    Для серверного тонкого драйвера используйте тот же URL-адрес, что и для тонкого драйвера.

    Для внутреннего драйвера на стороне сервера используйте следующие URL-адреса:

    Поскольку в этой среде драйвер фактически работает в рамках сеанса по умолчанию, а клиент всегда подключен, поэтому соединение никогда не должно закрываться.

    3. Зарегистрируйте драйвер Oracle JDBC

    Имя класса драйвера JDBC Oracle — oracle.jdbc.OracleDriver . Вы можете зарегистрировать этот драйвер следующим образом:

    ПРИМЕЧАНИЕ. Начиная с Java 6 (JDBC 4.0), явная регистрация драйвера, как указано выше, становится необязательной. Пока мы помещаем файл ojdbc10.jar в путь к классам, диспетчер драйверов JDBC может автоматически обнаруживать и загружать драйвер.

    4. Установить соединение с базой данных Oracle

    С помощью JDBC мы можем установить соединение с базой данных, вызвав метод getConnection() класса DriverManager. Существует три версии этого метода:

    Таким образом, у нас может быть три способа установить соединение следующим образом:

    Использование только URL базы данных для всего

    В этом методе мы указываем все свойства подключения в одной строке URL, например:

    Это использует тонкий драйвер для подключения пользователя Tiger с паролем scott к базе данных SID productDB, работающей на том же компьютере, через порт по умолчанию 1521.

    Использование URL-адреса базы данных, имени пользователя и пароля

    В этом методе мы передаем имя пользователя и пароль в качестве дополнительных аргументов в метод getConnetion() , например:

    Использование URL-адреса базы данных и объекта свойств

    В этом методе мы используем объект java.util.Properties для хранения имени пользователя, пароля и других дополнительных свойств. Например:

    В этом примере мы используем драйвер OCI с записью TNSNAMES ProductDB и указываем дополнительное свойство defaultRowPrefetch, которое представляет собой количество строк для предварительной выборки с сервера.

    5. Пример программы Java Connect to Oracle Database

    Для демонстрации мы создадим небольшую программу-пример ниже, которая устанавливает три разных соединения тремя упомянутыми выше способами и, наконец, закрывает все соединения:

    Это пример кода Java для подключения к серверу базы данных Oracle. Наглядные инструкции смотрите в следующем видео:

    Справочники API JDBC:

    Связанные руководства по JDBC:

    Об авторе:


    Нам Ха Мин является сертифицированным программистом Java (SCJP и SCWCD). Он начал программировать на Java во времена Java 1.4 и с тех пор влюбился в Java. Подружитесь с ним на Facebook и смотрите его видео на Java на YouTube.

    Эта статья представляет собой пошаговое руководство по подключению к базе данных Oracle из программы Java. Следующая автономная программа демонстрирует подключение к базе данных Oracle с использованием JDBC API. В этой программе мы будем использовать созданную Oracle фиктивную таблицу DUAL для получения системной даты Oracle.

    Java предоставляет стандартный интерфейс для подключения к базам данных, известный как JDBC (Java Database Connectivity). Oracle предоставляет библиотеку реализации этого интерфейса JDBC, с помощью которой программы Java могут подключаться к работающему экземпляру базы данных Oracle.

    Шаг 1. Загрузите драйверы Oracle JDBC

    Драйверы Oracle JDBC можно загрузить отсюда. Выберите версию, соответствующую версии вашей базы данных. В этом примере я использую драйвер JDBC Oracle 11g, так как я подключаюсь к базе данных Oracle 11g. Для Oracle 11g доступны две версии: ojdbc5.jar (для JDK 1.5) и ojdbc6.jar (для JDK 1.6). Используйте соответствующую версию для вашей установки Java (Oracle теперь требует онлайн-регистрации для загрузки драйверов). В этом руководстве я использую ojdbc6.jar.

    Шаг 2. Программа Java для подключения к Oracle

    Следующая программа на Java использует драйвер Oracle JDBC для подключения к работающему экземпляру базы данных Oracle. Вы можете использовать эту программу в любой базе данных Oracle, так как в этом примере используется встроенная фиктивная таблица Oracle DUAL для получения системной даты. DUAL позволяет нам получать такие значения, как системная дата, с помощью обычного SQL-запроса.

    Перед запуском программы убедитесь, что вы изменили значения DBURL, DBUSER и DBPASS. DBURL имеет форму,

    Замените имя_компьютера именем компьютера, на котором работает оракул, а имя_базы_данных замените именем службы экземпляра базы данных.

    Шаг 3. Добавьте файл ojdbc.jar в путь к классам

    Чтобы скомпилировать или запустить вышеуказанную программу, вам нужно добавить ojdbc.jar в путь к классам вашей программы. Если вы используете IDE, например NetBeans или Eclipse, вы можете добавить ojdbc.jar в качестве зависимой библиотеки, и NetBeans автоматически добавит ее в путь к классам.

    Если вы запускаете указанную выше программу из командной строки, скопируйте файл ojdbc.jar в папку, где находится указанная выше программа Java, а затем скомпилируйте файл с помощью следующей команды (это добавит файл ojdbc.jar в путь к классам),

    javac -classpath ./ojdbc6.jar OracleSample.java

    Запустите программу Java, используя следующую команду (ojdbc.jar добавляется в путь к классам),

    java -classpath "./ojdbc6.jar;." OracleSample

    Обратите внимание, что при запуске OracleSample вам потребуется как JAR-файл JDCB, так и текущая папка в пути к классам. Если все прошло хорошо, вы увидите следующий вывод.

    Подключение к базе данных Oracle с помощью Java — пример

    Если у вас нет экземпляра Oracle для тестирования этой программы, вы можете скачать бесплатную версию Oracle 11g Express отсюда.

    Читайте также: