Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Подключение базы данных Oracle к Visual Studio
В этой статье поговорим про подключение базы данных Oracle к Visual Studio в качестве источника данных. А также рассмотрим пример написания простейшего запроса к базе данных.
БД Oracle — как источник данных в VS
У меня имеется база данных «Книжный интернет-магазин», созданная с помощью СУБД Oracle. Будем использовать эту БД в качестве примера источника данных в данной статье.
Итак, вначале создадим в Visual Studio проект: «Приложение Windows Forms».
После того, как проект создан, в меню «ПРОЕКТ» выберем «Добавить новый источник данных…».
Появится окно «Мастер настройки источника данных». В этом окне выберем элемент «База данных» и нажмем кнопку Далее.
В следующем окне выбираем элемент «Набор данных» и жмем кнопку Далее.
Теперь необходимо выбрать подключение к базе данных. Оно у нас пока отсутствует, поэтому его необходимо создать. Нажмем кнопку «Создать подключение…».
В качестве источника данных выберем «База данных Oracle». В разделе «Connection Details» укажим данные для своего подключения.
В пункте «Database service name» я указал «XE», потому что использую Express edition версию Oracle.
Выполним тест подключения. Для этого нажмем кнопку «Проверить подключение».
В окне «Добавить подключение» нажмем кнопку ОК. Теперь, когда подключение создано, в Мастере настройки источника данных нажмем кнопку Далее.
В следующем окне поставим галочку напротив пункта «Да, сохранить подключение как» и нажмем кнопку Далее.
В последнем окне Мастера настройки источника данных выберем объекты, которые необходимо использовать в качестве набора данных в программе. И укажем имя этого набора. Нажмем кнопку Готово.
Теперь продемонстрируем использование данных из подключенной базы данных. Добавим в форму WIndows Forms элемент управления DataGridView. Щелкнем мышью на треугольничек в правом верхнем углу DataGridView, откроется меню «Задачи». В этом меню можно выбрать источник данных проекта.
В элементе управления DataGridView отобразятся данные из выбранной таблицы.
Пример запроса к БД Oracle из Visual Studio
Приведем пример запроса к базе данных, для этого будем использовать язык C#. Получим название книги по ее ID.
[expert_bq id=»1570″]Эта база, в соответствии с её именем, является просто контейнером для хранения системных компонентов — и они используются совместно всеми подключенными базами, устраняя ненужное дублирование данных и уменьшая число рекурсивных системных вызовов. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Также с введением PDB появляется новый принцип — каждое приложение должно иметь собственную подключаемую базу. Это позволяет избежать неприятностей с совпадающими именами объектов, синонимов и прочее. Кроме того логическая «изоляция» данных каждого приложения упрощает поддержку и миграцию.Подключение к базе данных Oracle через Excel
Следующий шаг — щелкнуть ссылку « Соединения», расположенную прямо под словом «Данные» в списке вкладок. Расположение ссылки Connections обведено красным на изображении выше. Вам должно быть представлено окно Соединения с рабочей книгой:
/привет/мир/etc
Когда-то наиболее естественным способом загрузки структурированных данных в БД Oracle была загрузка при помощи SQL*Loader. Требовалось подготовить файл с параметрами, управляющими загрузкой, и вызвать утилиту sqlloader, передав ей управляющий файл и файл с данными.
Затем производители Oracle предоставили новый механизм для загрузки данных из внешних файлов — external tables. Нужно создать внешнюю таблицу командой DDL CREATE TABLE , указав внешний файл в качестве источника данных и описав его структуру. Средства для описания структуры очень похожи на средства описания структуры для SQL*Loader.
В этой статье я расскажу о еще одном подходе к загрузке данных из внешних csv-файлов (которым уже давно успешно пользуюсь).
Для того, чтобы данные из csv-файла стали доступны для манипуляций при помощи языка SQL, прежде всего, для запроса SELECT , нужно решить две задачи:
Когда csv-файл загружен в БД и его содержимое доступно для PL/SQL, представить его данные в виде таблицы — это вопрос разбиения данных на строки, строк — на поля, и возврата строк из конвейерной (pipelined) функции.
Создам тип t_varchar_row для представления строки таблицы с 5-ю столбцами (при необходимости количество столбцов можно увеличить):
Значения типа t_varchar_row создаются с помощью конструктора:
Создам табличный тип t_varchar_row_table и проверю новые типы с помощью тестовой конвейерной функции:
Теперь, когда идея оформилась и ее реализуемость не вызывает сомнений, осталось собрать вместе код, загружающий данные из внешнего файла, и код для представления этих данных в виде таблицы t_varchar_row_table .
Помимо указания файла и директории для загрзуки, параметры функции позволяют указать
Для разбора содержимого файла, загруженного в CLOB переменную l_clob в функции используется SQL семантика для LOB, позволяющая работать с большим объектом (N)CLOB как со строкой VARCHAR2. (Об SQL семантике для LOB я упоминал в статье О работе с большими объектами в СУБД Oracle.)
Для тестирования создам файл Hemingway.csv со списком романов Хэмингуэя и годами публикации:
Помещу файл в директорию файловой системы, доступную через объект directory FILES_DIR :
Если у вас нет подходящего объекта directory, создать его можно командой:
Получу данные из файла Hemingway.csv с помощью SELECT и функции csv :
Обратите внимание, что в последнем случае, когда SELECT выбирает не все строки, освобождение временного CLOB происходит в обработчике исключения NO_DATA_NEEDED функции csv .
Ещё один пример. Скопирую в каталог /home/oracle/files файл со словами английского языка, имеющийся во многих ОС семейстав Unix. Каждая строка файла содержит 1 слово, что позволяет рассматривать этот файл как как csv-файл с одним полем в строке:
Как видим, в файле 479623 слова. Получу его содержимое с помощью функции csv :
Очевидно, что SQL семантика для LOB — не самый эффективный способ работы с содержанием больших объектов. Ведь при выполнении функций, перегруженных для типа (N)CLOB, неявно создаются временные (N)CLOB’ы.
Создам оптимизированную по быстродействию функцию csv2 , переписав фрагмент, ответственный за выделение строк из CLOB’а:
Проверим, насколько новая версия эффективней прежней:
В заключение, удалю демонстрационные функции и типы:
Продемонстрированный подход к загрузке данных из csv-файлов имеет преимущество перед SQL*Loader и external tables, не требуя создания таблиц специально для загрузки данных.
[expert_bq id=»1570″]Обратите внимание, что в последнем случае, когда SELECT выбирает не все строки, освобождение временного CLOB происходит в обработчике исключения NO_DATA_NEEDED функции csv. Если же вы хотите что-то уточнить, обращайтесь ко мне![/expert_bq] Словно радуга после дождя, всегда приходящая вместе с теплыми лучами солнца и пением птиц, Слово Божие всегда прямо перед нами — только повернись лицом к свету, открой Библию, прочти чудесные строки — и вот Он, Спаситель Иисус Христос, прямо перед вами. Господь всегда приходит к нам в светлых видениях и мыслях, явно принося милость благодать и прощение для тех, кто захочет услышать.Подключение базы данных Oracle к Visual Studio — Программирование на C, C# и Java
И последнее, но не менее важное: у вас также есть поставщик OLE DB. Опять один от Microsoft (Поставщик Microsoft OLE DB для Oracle) и один от Oracle (Поставщик Oracle для OLE DB). Поставщик Microsoft существует только для 32-битной версии и устарел.