![]() |
+7 (495) 229-0436 | ![]() |
shopadmin@itshop.ru | 119334, г. Москва, ул. Бардина, д. 4, корп. 3 | ![]() |
![]() |
![]() |
|
|
C# & Oracle - заметки на полях - 109.11.2009 12:11
Когда-то давно, очень давно...Компания купила лицензию на БД Oracle. Затем в эту компанию трудоустроился я. Соответсвенно начав продвигать .Net "в массы". БД Oracle используются не во многих организациях, но используется. Как же осуществить взаимодействие с БД Oracle, используя C#? Оговорюсь заранее, я не гуру Oracle; а так же не гуру красивого использования паттернов, но я стараюсь и Но оставим философствования. Займёмся поставленной задачей. Перво-наперво необходимо подготовить "среду": 1. Поставить клиент Oracle, без которого взаимодействие с БД не осуществить. 2. Настроить TNS под свои нужды. 3. Создать проект в Visual Studio. 4. Добавить reference на сборку System.Data.OracleClient.dll, посредством которой и будем "манипулировать" БД. Подготовим почву, пожалуй сделаем БД военкомата. В простейшем случае, для этого хватит одной таблицы:
Идентификатор, Имя, Фамилия, Возраст, Рост, Биография. Вес нас не интересует. Определим процедуры для добавления, на мой взгляд самое интересное, далее я объясню почему:
Удаление:
Получение данных:
Теперь я объясню что интересного в процедуре добавления нового пользователя - объект типа CLOB. Это тип способен хранить строковые данные, размером до 4 гигабайт, в отличие от Varchar, способного оперировать строками до 4000 байт. Т.е. если вы попытаетесь создать VARCHAR поле размером 5000, то получите суровый "облом". Но те кто работал с типом CLOB из C# знают, что это очень по "челябенски". Но я забегаю вперёд, обо всём попорядку. При работе с Oracle есть один неприятный момент, если явно не закрывать соединение, то количество курсоров будет после SELECT`a будет рости в геометрической прогрессии. Данная проблема решается "в лоб": Создание и открытие соединения
таким образом, за вас всю черновую работу сделает IDisposable. Если обратить внимание на конструктор OracleConnection, то увидите что есть 2 варианта, "пустой" и с использованием строки, описывающей соединение с БД. Строка имеет примерно такой вид: Data Source=out_database_name;Password=our_password;User ID=our_username Я думаю в объяснениях, что здесь что, данная строчка не нуждается. Следующим шагом стоит открыть соединение:
Создание командыТеперь мы готовы исполнять команду. После использования команды её тоже необходимо "освободить", не будем отходить от принципов и воспользуемся всё той же замечательной конструкцией using:
Давайте разберёмся что делает данный "кусок" кода: вначале создаётся команда, ей присваивается соединение, в рамках которого будет работать наша команда. Затем указывается тип команды, всего выделяется 3 типа: 1. StoredProcedure - Имя хранимой процедуры. 2. TableDirect - Имя таблицы. 3. Text - Текстовая команда SQL. (По умолчанию). Следующий параметр - текст, непосредственно имя хранимой процедуры или команда. В нашем случае будет использована хранимая процедура с именем "GET_CONscriptS" Отлично перейдём Использование передаваемых параметровОговорюсь сразу, использовать параметры можно и с CommandType.Text, ниже я покажу как это делается. Пока же вернёмся с нашим параметрам:
Что происходит здесь: создали параметр, указали что он работает на "выход" и указали тип параметра ( более подробную информацию о используемых типах а так же их совместимости со стандартными типами .Net можно узнать из MSDN ). Если бы параметр работал на "вход", то нужно было бы указать и значение - Value. Прикрепили параметр к команде и… Выполнение команды
команда выполнена… теперь можно "выгребсти" данные например так:
Возвращаемый параметр, представляет собой курсор, который можно прочитать, как OracleDataReader. Как разбирать параметр оставим в качестве "домашнего задания" ;). На посошокВ заключении, я хочу рассказать про то как передать параметр в текст, а точнее я покажу:
Как видите вся хитрость заключается в использовании знака - :. В следующей статье я расскажу про работу с CLOB и приведу свой код, заточенный под меня. Ссылки по теме |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.
На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.
|
119334, г. Москва, ул. Бардина, д. 4, корп. 3 +7 (495) 229-0436 shopadmin@itshop.ru |
|
© ООО "Interface Ltd." Продаем программное обеспечение с 1990 года |