Ado подключение к oracle

Обновлено: 04.07.2024

Подключение к бд oracle xe через delphi 7 ado
Нужно подключится к бд oracle xe 10g через delphi 7 с помощью ado, Подключение adoconection.

Подключение базы данных через ADO
Прошу вас помочь. Нужно подключить базу данных из Access в Delphi 7 Через Ado Чтобы в Delphi 7.

Подключение Access через ADO Conection
Здравствуйте подскажите как подключить базу данных microsoft office access через ADO Conection.По.

Подключение к MS SQLServer через ADO+udl файл
Доброго времени суток. Столкнулся с такой проблемой. При настройке подключения в ADOConnection.

Так тебе Oracle ясно говорит, что sys должен подключаться AS SYSDBA. Попробуй подключиться не из Delphi, а через родной SQL*Plus - там абсолютно то же самое Так тебе Oracle ясно говорит, что sys должен подключаться AS SYSDBA. Попробуй подключиться не из Delphi, а через родной SQL*Plus - там абсолютно то же самое Я через команд лайн обычно подключаюсь. Но не в этом суть, там я подключаюсь как SYSDBA, работает, а вот как в адо конешн сделать чтобы также работало? В некоторых компонентах (ODAC, DOA) есть спец. атрибут для AS SYSDBA. Насчет ADO не знаю, не работал, да и вообще это не лучший вариант для работы с Oracle - в отдельных местах глючит.
Попробуй в логин указать sys as sysdba - может и прокатит.
А если не секрет - зачем тебе коннект с sys через твою прогу? Что такого ты хочешь делать, что требует именно привилегии sysdba?

используй DOA и укажи там пользователя для подключения. я так подключаюсь

Добавлено через 1 минуту
тем более если будешь подключаться через ODBC, на машинах где не установлен, срабатывать не будет. а так вшивается в прогу

В некоторых компонентах (ODAC, DOA) есть спец. атрибут для AS SYSDBA. Насчет ADO не знаю, не работал, да и вообще это не лучший вариант для работы с Oracle - в отдельных местах глючит.
Попробуй в логин указать sys as sysdba - может и прокатит.
А если не секрет - зачем тебе коннект с sys через твою прогу? Что такого ты хочешь делать, что требует именно привилегии sysdba?

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

Недавно столкнулся с необходимостью делать из 1С прямые запросы к базе данных Oracle, используя ADODB.Connection. В этой статье хочу поделиться опытом и рассказать про некоторые особенности с которыми пришлось столкнуться.

Провайдер

Первое, что необходимо для использования ADODB.Connection это наличие в системе провайдера (драйвера), который позволяет подключаться к источнику данных. Для баз данных Oracle существует два драйвера.



Здесь в разделе Drivers нас интересует пакет Oracle Data Access Components for Windows



Дальше разберетесь сами. Нужно только выбрать правильную разрядность. Не надо только качать пакет где в названии есть Xcopy. В нем используется какая-то полуавтоматическая установка через .bat файлы.
В процессе установки можно выбрать только то, что нас интересует Oracle Provider For OLE DB



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



После установки откроем наш файл *.udl и теперь мы видим, что на закладке Поставщик данных появилась еще одна строчка с провайдером Oracle Provider for OLE DB


На какой рабочей станции устанавливать драйвер

Теперь немного порассуждаем на каком компьютере должен быть установлен провайдер. Это может отразиться и на выборе разрядности драйвера, о чем говорилось в предыдущем пункте. Раз уж вы читаете эту статью вряд ли вы используете файловый вариант базы 1С, т.к. базы данных Oracle используются как правило очень крупными организациями. Скорее речь идет о клиент-серверном варианте базы 1С. Таким образом мы имеем два варианта.

Либо устанавливать драйвер на каждой клиентской машине, либо один раз на сервере, где физически установлен сервер 1С:Предприятия. Понятно, что ставить драйвер на каждую клиентскую машину это не вариант, тем более, что у разных пользователей могут быть установлены операционные системы с разной разрядностью. Да и само количество пользовательских станций может быть большим. Поэтому устанавливать драйвер будем на сервере 1С:Предприятия. Напомню, что код на сервере 1С:Предприятия выполняется от имени служебного пользователя USR1CV8. Соответственно у этого пользователя должны быть права на использование провайдера.

Процедура подключения

Так как драйвер мы установили на сервере, то и установка соединения должна выполняться на сервере, для этого процедуру подключения к оракловой базе разместим в серверном общем модуле ОбщегоНазначенияСервер.

Теперь хочу сделать несколько пояснений.

  • Если кто-то заметил, то псевдонимы полей в тексте запроса взяты в кавычки. Это особенность языка PL/SQL. Ни в языке запросов 1С ни в Transact-SQL эти кавычки не нужны.Поэтому, если будете использовать псевдонимы, помните про этот момент, иначе запрос вывалится с ошибкой.
  • В строке запроса

Теперь проделаем обратную операцию. Вставим записи из таблицы значений в таблицу базы данных Oracle.

И опять несколько замечаний

    В следующей строке

Спасибо, очень полезно!
И ещё, вроде бы, в INSERT INTO запросе вылетит ошибка, т.к. отсутствует открывающая скобка для VALUES (очепятка) %)

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

Существует много различных СУРБД. Но так случилось (и этому способствовало много предпосылок), что в абсолютные лидеры (по популярности, распространённости и мощности) вырвалась одна из них. Называть её имя я пока не буду, а предложу лучше взглянуть на следующую иллюстрацию:


Рейтинг СУРБД на российском рынке

Delphi + Oracle

Запускаем Delphi. Аккуратно положим на формочку тот же набор компонентов, который мы кладём для подключения к БД Access. Ну, если вы из тех единиц, которые этого ни разу не делали (может быть просто, вы не пишете на Делфи), то вкратце скажу: с закладки Data Controls палитры компонентов поместите на форму DBGrid, с закладки DataAccess - компонент DataSource, затем перейдите на закладку ADO и добавьте компоненты ADOConnection и ADOQuery. Для простоты не будем изменять их имена, пусть называются именами по умолчанию. Настроим ADOConnection1. Как вы знаете, он служит для задания пути к базе данных и способа открытия таблицы (задания драйвера базы данных). В принципе, его можно было не создавать, а воспользоваться предоставленным для этого свойством компонента ADOQuery. Но, конечно, правильнее воспользоваться именно компонентом ADOConnection, потому что, скорее всего из одной базы данных вам надо будет открыть несколько таблиц, то есть использовать один путь к базе данных, заданный один раз в этом объекте. Как программист (администратор) Oracle вы знаете, что в одной базе данных может находиться тысячи таблиц. Настроим путь к базе данных. Для этого в свойстве ConnectionString компонента ADOConnection1 щёлкним на кнопке с многоточием. Откроется знакомое окно выбора поставщика данных. Выберем драйвер Oracle Provider for OLE DB.


Выбор драйвера БД

На следующей вкладке («Подключение») введём данные для подключения к базе данных. «Источник данных» - это имя базы данных. Если в процессе установки Оракла, при создании базы данных вы не изменили значение по умолчанию, то это orcl. Для простоты, в качестве пользователя зададим привилегированного пользователя system. Для экспериментов пойдёт, но для реальной работы в компании с десятками и сотнями пользователей нужно серьёзно подойти к этому вопросу и работать с данными от имени специально созданного пользователя («возможно, это Вы»). Впрочем, если у админа базы данных голова не забыта дома, то он сам об этом позаботится. В качестве пароля, введём тот, который вы задали при установке и создании базы данных Оракл. Проверим коннект, щёлкнув по соответствующей кнопке, если всё окей, ставим галочку «Разрешить сохранения пароля» и нажимаем OK. Если же нет, то восстанавливливаем в памяти имя базы данных и пароль. Затем, в инспекторе объектов свойству LoginPrompt присвоим значение False, чтобы при подключении к базе данных ADO не требовала имя и пароль. Можно сейчас подключиться к Ораклу, установив свойство Connected в значение True. Теперь соединим компоненты.

Знающие могут смело пропустить этот абзац, не знающие, прошу, читайте. Для DBGrid1 в качестве значения свойства DataSource выберите DataSource1. Для DataSource1 свойству DataSet выберите ADOQuery1.

Теперь, настроим ADOQuery1. Собственно, этот компонент и будет извлекать данные из заданной таблицы. Как видно по имени этого объекта, он работает с данными посредством запроса. Конечно, можно было воспользоваться другим компонентом, например, ADOTable, который открывает таблицу полностью и позволяет работать с данными посредством языка Delphi. Как раз поэтому, мы вынуждены от него отказаться, потому что в таблицах базы данных Оракл может быть слишком много данных, которые нам не нужны; к тому же все эти данные (в реале) придётся передавать по сети. Используя запрос, мы сможем попросить у Оракла только нужные нам данные, не грузя ни его самого (в смысле Оракла), ни сеть. Первым делом, для свойства Connection установим значение - имя объекта связи ADOConnection1. После этого откроем редактор запроса (активизировав свойство SQL). Здесь, возможен вопрос: какую таблицу мы хотим открыть? Действительно, какую? В Оракл имеется огромное количество разных системных таблиц. Ну, и пускай они имеются. Предлагаю создать свою. Я, например, решил посвятить таблицу книгам, и назвал её books. Вы, конечно, можете создать любую другую. OK. Открываем SQL*Plus, пишем запрос - создаём таблицу. Вот как выглядит окно программы SQL*Plus в моём случае:


Запрос для создания таблицы

Заполнять её мы уже будем из программы написанной на Delphi. Возвращаемся к проекту. Сейчас подключимся к созданной таблице. Для этого в редакторе запроса свойства SQL компонента ADOQuery1 напишем: select * from books. Ну, собственно, пока оттуда выбирать нечего, но хотя бы, заголовки, и то вперёд. Теперь активизируем этот запрос (свойство Active (в инспекторе объектов) поставим в True). Если всё сделано правильно, то в объекте отображения данных появятся заголовки созданной таблицы.

Если сейчас откомпилировать, запустить приложение и ввести данные (после этого переместить табличный курсор на какую-нибудь другую запись), то они сохранятся в таблице базы данных Oracle, как будто это любая другая локальная таблица! Осталось только добавь кнопку для обновления данных. В обработчике нажатия на ней напишим такой код:

Вот, собственно, результат достигнут: нам удалось подключиться к базе данных Оракл с помощью ADO, извлечь и модифицировать данные из таблицы. Конечно, вы можете добавить всю функциональность, которую вы добавляете к своим приложениям, работающим с локальными базами данных, например: вставка, удаление записи и другое. Замечу, многое можно сделать, сразу на стороне сервера, отправив запрос. Этим вы не только упростите себе жизнь, написав одну команду на языке SQL, вместо десятка на языке Delphi, но и сделаете приятней жизнь пользователям своей программы, сократив время ожидания результата, выполнив запрос сразу на сервере, и только обновив данные в окне своей программы.

dbExpress


Параметры подключения к БД

Естественно, на иллюстрации я скрыл свой реальный пароль, поскольку в этом окне он отображается в открытом виде (!). Затем, как в прошлый раз свойству LoginPrompt (уже в инспекторе объектов) присвоим значение False, чтобы каждый раз при подключении не вводить имя и пароль. И, наконец, Connected постаим в True. Всё, мы в базе. Теперь надо создать таблицу и потом к ней подключится. В общем, для работы с таблицами (подобно компоненту ADOQuery с закладки ADO) служит подобъект DataSet компонента SimpleDataSet. Развернём список его свойств. Ничего не будем настраивать, поскольку мы напишем код, только проверим, чтобы свойству CommandType было присвоено значение ctQuery, мы ведь желаем использовать запросы для доступа к таблицам по причинам указанным выше. Добавим на форму ещё одну кнопку, обзовём её: «Создать таблицу». Если вы, как я, неравнодушны к литературе, то есть следуете за мной ещё с прошлой таблицы, то создайте событие и напишите в нём такой код:

Этот код, сначала отключает набор данных, поскольку у меня в программе он включается в начале работы программы для извлечения данных из ранее созданной таблицы, вы, естественно можете это не писать. Затем, в свойство CommandText подобъекта DataSet объекта SimpleDataSet помещается SQL-запрос, который создаёт таблицу books2 аналогичную таблице books. Следующим действием, этот запрос выполняется. Весь этот код заключён в безопасный блок, для того, чтобы перехватить исключение. В общем, по комментариям всё ясно. После блока обработки исключительной ситуации (здесь, блока игнорирования) программа подключается к только, что созданной таблице. Процедура Table_Update выглядит следующим образом:

Я её написал по той простой причине, что включённый в неё блок кода вызывается на протяжении программы много раз; изменяется только командная строка - запрос. Поэтому, при вызове я передаю его в качестве параметра. Удаление таблицы вы реализуете сами, если что, смотрите мою программу. Если сейчас откомпилировать, запустить программу, затем, создать таблицу, и попробовать ввести данные, то они не сохранятся в таблице БД Оракл. Видно ADO круче, чем dbExpress. Ну, не зря же мы проделали всю эту работу по подключению к БД с помощью компонента SimpleDataSet. Конечно, не зря. Это я сделал для того, чтобы показать, что с помощью языка SQL в Оракл можно делать хоть что, и писать на нём ото всюду, откуда только возможно подключится к БД. OK. Создадим ещё одну кнопочку. Обзовём её «Скопировать данные». Дважды щёлкнем на ней и напишем такой код:

Здесь, в каждой итерации цикла выполняется могучий SQL-оператор insert, который вставляет в таблицу books2 записи из таблицы books. Цикл заканчивается тогда, когда все записи таблицы books будут скопированы. Сделав это, мы увидели всю силу и мощь Delphi + SQL = Oracle! Я описал не всю функциональность программы, так что полную версию программы вы можете посмотреть, открыв исходник, который находится в папке DelphiOracle.


Delphi6

Рассмотрим, также, случай с Delphi6. Если вам это не надо, не читайте этот раздел. У кого по прежнему стоит шестая версия (мне вас, действительно, жалко) создайте новый проект и читайте дальше. В этом проекте я только покажу, как в шестой версии Делфи написать приложение для подключения к ранее созданной таблице books БД Оракл. Проект будет находиться в папке D6Oracle. Поместите на форму объект для обозрения данных, DataSource и два компонента с закладки dbExpress: SQLConnection и SQLClientDataSet. Вот, собственно, все отличия: за место одного в седьмой версии, два в шестой. Сначала, настройте SQLConnection1 подобно подобъекту связи компонента SimpleDataSet1, затем, подключив его через соответствующее свойство к компоненту SQLClientDataSet1, настройте последний соответствующим образом (подобно, подобъекту DataSet компонента SimpleDataSet1, как мы делали в седьмой версии Делфи). Только, не забудьте, в значение свойства CommandText написать такой запрос: select * from books, чтобы подключиться к этой таблице и изъять из неё данные. Соединив все компоненты, активируйте это хозяйство, через компонент SQLClientDataSet1. Данные из таблицы предстанут перед вашим взором! Заметьте, это есть dbExpress, и он не может напрямую обновлять данные, поэтому, чтобы осуществить обновление данных, вам надо будет встраивать самописные SQL-запросы. Но, как мы видели - это не проблема.

Конец

В этой статье описаны далеко не все возможности написания приложений под БД Оракл на Делфи. Но, чтобы всё описать, нужен не один толстенный томик. Да, я и не ставил перед собой цели сделать это, главное - дать импульс к изучению, а в дальнейшем вы и без меня найдёте необходимую информацию. Осваивайте много разных программных продуктов (и способов работы с ними), можете быть уверены, в жизни пригодится! Удачи!

В архиве в папке DelphiOracle вы найдёте весь исходный код программы, рассмотренной в первой части статьи, а в папке D6Oracle - программу, которая рассмотрена во второй части.

Основы ADO.NET

242

Прокачай свою команду! B2B IT Education
Python live online

Введение

Структуры подсоединения к БД

  1. Архитектура, подключенная к базе: подсоединена к БД на протяжении всего рабочего времени.
  2. Архитектура, не подсоединённая к БД: приложение, автоматически подключается/отключается в процессе работы. Приложения на такой архитектуре используют временные данные, хранящиеся на стороне клиента (DataSet).

Прокачай свою команду! B2B IT Education
Python live online

Диаграмма видов

  1. Connection Class
  2. Command Class
  3. DataReader Class
  4. DataAdaptor Class
  5. DataSet.Class

1. Connection Class

Тема связана со специальностями:

2. Command Class

  • ExecuteReader: Возвращает данные к клиенту в виде строк.
  • ExecuteNonQuery: Выполняет команду, изменяющую данные в базе данных.
  • ExecuteScalar: Данный класс возвращает только одно значение.
  • ExecuteXMLReader: (Только для классов SqlClient) Получает данные из базы данных SQL Server 2000 с помощью XML-потока.

3. DataReader Class

DataReader используется для получения данных. Он используется в сочетании с Command Class для выполнения SQL-запроса.

5. DataSet Class

Для настройки подключения Вы должны быть знакомы со строками подключения (connection strings). ConnectionString – строка переменной (регистр не учитывается). Строки подключения нужны нам для параметра SQLConnection. Данные примеры содержат основные значения, а именно: provider, server, database, userid и password.

SQL Аутентификация

String constr= "server=.;database=institute;user > ;

String constr= "data source=.;initial catalog=institute;uid=rakesh;pwd=abc@213" ;

Windows Аутентификация ( Windows Authentication)

String constr= "server=.;database=institute;trusted_connection=true"

String constr= "server=.;initial catalog=institute;integrated security=true"

Видео курсы по схожей тематике:

Получение и отображение данных из базы данных

  1. Создайте объект SqlConnection, используя строку подключения.
  2. Откройте соединение.
  3. Создайте SQLCommand. Укажите тип SQLCommand.
  4. Выполните команду (используйте executereader).
  5. Получить результат (используйте SqlDataReader).
  6. Закройте соединение.
  7. Получите результат.

Ниже приведен код для подсоединения к SQL:

public partial class WebForml : System.Web.UI.Page

protected void Page_Load( object sender, EventArgs e)

SqlConnection con = new SqlConnection ( "data source=.; database=Sample; integrated security=SSPI" );

SqlCommand cmd = new SqlCommand ( "Select * from tblProduct" , con);

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