Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225

Кто-нибудь подключал базу данных из файла *.sql, используя ODAC (либу от Oracle) ?

17.05.2013, 21:29. Показов 3471. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Установил последнюю версию либы ODAC (Oracle Data Access Components with Oracle Developer Tools for Visual Studio).
Почитал мануал. Код оттуда:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using Oracle.DataAccess.Client; // ODP.NET Oracle managed provider
using Oracle.DataAccess.Types; 
 
string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";
OracleConnection conn = new OracleConnection(oradb);  // C#
conn.Open(); 
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select department_name from departments where department_id = 10";
cmd.CommandType = CommandType.Text; 
OracleDataReader dr = cmd.ExecuteReader();
dr.Read();
label1.Text = dr.GetString(0);
conn.Dispose();
Не понял коннект к какой БД происходит, но не суть, там ничего нет про подключение БД через файл.
  1. Так вот, может кто-то сталкивался с такой проблемой? ODAC вообще поддерживает подключение *.sql файлов?
  2. Если не поддерживает, посоветуйте пожалуйста что-нибудь другое (другую либу/технологию?) . LINQ (Linq2Sql) вроде только для MS Sql Server'а сделано. Мельком еще читал про NHibernate, EntityFramework (молодая и глючная), OpenAccess.
  3. И вообще скажите, возможно ли подключение *.sql файла?

Опыта у меня нет (с подключением БД особенно), так что можно попроще, пожалуйста).

P. S. Пытался на сайте Oracle найти e-mail саппорта, но там черт ногу сломит, я ничего не понял).

P. P. S. Заранее спасибо .
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2013, 21:29
Ответы с готовыми решениями:

Кто нибудь использует/использовал эту либу?
'com.squareup.okhttp:okhttp:2.6.0' OkHttpClient Пользуетесь ли вы этой библиотекой?

Кто нибудь использовал базу данных от google?
cloud google mysql запрос в google.. Там дается база данных mysql на серверах google. Это инновация, ведь это невзламываемся база...

Ребята скиньте кто нибудь любую базу данных.
Ребята скиньте кто нибудь любую базу даннаых на delphi!!!!!!!!

19
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.05.2013, 08:37
Что вы имеете ввиду под *.sql файлами?
sqlplus скрипты? Или просто отдельные запросы?
Вообще не понятно что значить "подключить" sql-файл?

Чем вас не устраивает просто считать все содержимое файла и передавать в CommandText, это получиться не то что вы хотите?


Цитата Сообщение от umc55555 Посмотреть сообщение
Не понял коннект к какой БД происходит
Вы указываете Data Source: Data Source=ORCL
Используется та база, которая прописана в tnsnames.ora под синонимом ORCL
1
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
20.05.2013, 10:39
Цитата Сообщение от umc55555 Посмотреть сообщение
P. S. Пытался на сайте Oracle найти e-mail саппорта, но там черт ногу сломит, я ничего не понял).
Для сведения: Oracle Support доступен только тем, кто оплатил техподдержку
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
21.05.2013, 15:47  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Что вы имеете ввиду под *.sql файлами?
sqlplus скрипты? Или просто отдельные запросы?
Вообще не понятно что значить "подключить" sql-файл?
*.sql-файл - файл с расширением .sql, содержит скрипт создания базы (drop table, create table, добавление ключей через alter, и т. п.). Боюсь соврать, но это PL/SQL, кажется. Слабо представляю разницу.
Я сам толком не понимаю, что значит "подключить")). Примерно так (извините за косоязычность): когда я подключаю базу в файле, она прикрипляется к приложению и как бы становится внутренней базой данных приложения. Так, что я могу редактировать информацию в базе (добавлять, изменять, удалять) и выводить эту информацию на форму (в таблицу, например).

Цитата Сообщение от turbanoff Посмотреть сообщение
Чем вас не устраивает просто считать все содержимое файла и передавать в CommandText, это получиться не то что вы хотите?
Может и то, не знаю. Можно поподробнее? Зачем он нужен, с чем его едят и как используют?

Цитата Сообщение от turbanoff Посмотреть сообщение
Используется та база, которая прописана в tnsnames.ora под синонимом ORCL
Что такое "tnsnames.ora"?
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
21.05.2013, 15:56
Цитата Сообщение от umc55555
*.sql-файл - файл с расширением .sql, содержит скрипт создания базы (drop table, create table, добавление ключей через alter, и т. п.).
Это создание объектов БД, а не самой БД

Цитата Сообщение от umc55555
Боюсь соврать, но это PL/SQL, кажется.
М.б. SQL, м.б. PL/SQL

Цитата Сообщение от umc55555
Я сам толком не понимаю, что значит "подключить")). Примерно так (извините за косоязычность): когда я подключаю базу в файле, она прикрипляется к приложению и как бы становится внутренней базой данных приложения. Так, что я могу редактировать информацию в базе (добавлять, изменять, удалять) и выводить эту информацию на форму (в таблицу, например).
Это если БД файл-серверная. Тогда клиенская программа напрямую работает с файлами БД.
Если БД клиент-серверная, то клиенская программа подключается (соединяется) к БД, посылает запросы серверу, сервер их обрабатывает и возвращает клиенту результаты. Т.е. в этом случае непосредственно с файлами БД клиентская программа не работает. И подобный .sql-файл (файл скриптов, поскольку расширение он может иметь любое) можно только исполнить в какой-то клиентской программе, которая умеет "читать" SQL-запросы, но никак не "подключить".

Цитата Сообщение от umc55555
Что такое "tnsnames.ora"?
Это уже вопросы чисто по Oracle, поэтому рекомендую их задавать в соответствующем форуме
1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.05.2013, 16:18
Цитата Сообщение от umc55555 Посмотреть сообщение
*.sql-файл - файл с расширением .sql, содержит скрипт создания базы (drop table, create table, добавление ключей через alter, и т. п.).
Обычно его выполняет его один раз при развертывании приложения, и более он не нужен.
Поэтому поддержки именно скриптов нету - но если в sql-файлах будет содержатся только по одной команде, то, конечно, же такие содержимое таких файлов можно считать и запустить на выполнение.

Цитата Сообщение от umc55555 Посмотреть сообщение
Может и то, не знаю. Можно поподробнее? Зачем он нужен, с чем его едят и как используют?
Кто ОН ?

Считать содержимое текстового файла можно так - File.ReadAllText(fileName)
А как запускать команды, у вас есть пример - вы его сами в первом посте.
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
21.05.2013, 16:59  [ТС]
Цитата Сообщение от Grossmeister Посмотреть сообщение
Это создание объектов БД, а не самой БД.
И подобный .sql-файл (файл скриптов, поскольку расширение он может иметь любое) можно только исполнить в какой-то клиентской программе, которая умеет "читать" SQL-запросы, но никак не "подключить".
Окей, я просто не знаю терминологию).

Кто ОН ?
Считать содержимое текстового файла можно так - File.ReadAllText(fileName)
А как запускать команды, у вас есть пример - вы его сами в первом посте.
Он - CommandText, то, про что вы писали, но уже не важно, я понял. Забыл про пример кода, который я приводил. Не совсем то, что нужно, мне нужно весь скрипт выполнить. Нашел какое-то решение, позже проверю.

P. S. Для интересующихся темой (возможное решение проблемы). Как выполнить весь скрипт из файла .sql - ссылка.
C#
1
2
3
4
5
6
string sqlConnectionString = "Data Source=(local);Initial Catalog=AdventureWorks;Integrated Security=True";
FileInfo file = new FileInfo("C:\\myscript.sql"); 
string script = file.OpenText().ReadToEnd(); 
SqlConnection conn = new SqlConnection(sqlConnectionString); 
Server server = new Server(new ServerConnection(conn)); 
server.ConnectionContext.ExecuteNonQuery(script);
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
21.05.2013, 17:08
Цитата Сообщение от umc55555 Посмотреть сообщение
Для интересующихся темой (возможное решение проблемы)
Приведенный код используется для работы с mssql, а не Oracle.
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 17:09  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Приведенный код используется для работы с mssql, а не Oracle.
За неимением других вариантов я все же попробую этот. Может хоть что-нибудь получится. Если что-то не получится, то проблема по крайней мере будет уже в самом скрипте, вроде не так страшно.

После многочисленных приключений с подключением сборки, указанной в ссылке выше, все-таки удалось ее подцепить.
Подключение SMO здесь, а для этого надо установить SQL Server, что у меня получилось только частично, потому что инсталлер ругается на отсутствие SP1 у VS2008 (установка сервис пака ничего не дала).
Итак, подключил чертову SMO, вставил код для запуска скрипта, собрал проект и запустил. Ругнулся на какую-то несовместимость версий 2.* и 4.* (версии фреймворков, кажется; у меня фреймворк 4, VS2010), сменил фреймворк на 3-й в свойствах проекта.
Собрал, запустил еще раз - появилась такая ошибка хрень: [скрин].
Не знаю, что делать. SQL Server 2008 установил, но может удаленное подключение попробовать настроить? Пока не знаю как.
Миниатюры
Кто-нибудь подключал базу данных из файла *.sql, используя ODAC (либу от Oracle) ?  
0
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 19:00  [ТС]
Вряд ли с сервером что-нибудь выйдет, лучше наверное использовать официалную либу от Oracle. [Решение навеяно темой].
Вот только как, не знаю.
Новый вопрос. Кто-нибудь использовал ODP? (ODP ODAC with ODT for VS) Как запустить скрипт через нее, приведите пример кода, пожалуйста!
Еще мануал русский не помешал бы (хотя сильно сомневаюсь, что такой существует). Только английский нашел, пока не очень.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.05.2013, 19:16
Цитата Сообщение от umc55555 Посмотреть сообщение
Вряд ли с сервером что-нибудь выйдет
Разумеется вряд ли - это разные СУБД.
Цитата Сообщение от umc55555 Посмотреть сообщение
Как запустить скрипт через нее
Я вам уже говорил - это невозможно. Разбивайте скрипт на отдельные куски и запускайте их по одному. Либо переделывайте чтобы все вызывалось в одном PL/SQL блоке.
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 19:50  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Разумеется вряд ли - это разные СУБД.
Не очень понимаю почему. Формат файла тот же, сами запросы если и отличаются, то вряд ли сильно (по крайней мере мои запросы - создание таблиц и т. д. - мне кажется, отличаются слабо от sql server'ских). Я просто искал способ запуска скрипта, хотя бы понимание улучшилось, может и с ODP получилось бы что-нибудь по аналогии.

Цитата Сообщение от turbanoff Посмотреть сообщение
Я вам уже говорил - это невозможно. Разбивайте скрипт на отдельные куски и запускайте их по одному.
Эмм, разве? Про вариант "по одному" помню, но не помню, чтобы вы говорили, что невозможно запустить скрипт целиком.

Цитата Сообщение от turbanoff Посмотреть сообщение
Либо переделывайте чтобы все вызывалось в одном PL/SQL блоке.
Как? BEGIN и END добавить, если я правильно понял? Если да, то что потом, запихнуть это блок в CommandText?
Ок, но... все равно не очень понятно. К чему коннектиться и нужен ли коннект вообще?
C#
1
2
string oradb = "Data Source=ORCL;User Id=hr;Password=hr;";
OracleConnection conn = new OracleConnection(oradb);
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.05.2013, 20:11
Цитата Сообщение от umc55555 Посмотреть сообщение
Не очень понимаю почему. Формат файла тот же, сами запросы если и отличаются, то вряд ли сильно
У вас какое-то неправильно представление об ADO.NET провайдерах. Каждый умеет работать только со своей СУБД и только.

Цитата Сообщение от umc55555 Посмотреть сообщение
К чему коннектиться и нужен ли коннект вообще?
К базе/схеме, в кототорой вам нужно запустить скрипт.

Добавлено через 4 минуты
Цитата Сообщение от umc55555 Посмотреть сообщение
но не помню, чтобы вы говорили, что невозможно запустить скрипт целиком.
Ок. Это невозможно, по крайней мере с ODP.NET

Добавлено через 3 минуты
Цитата Сообщение от umc55555 Посмотреть сообщение
Как? BEGIN и END добавить, если я правильно понял? Если да, то что потом, запихнуть это блок в CommandText?
Обычный анонимный PL/SQL блок с кучей вызовов execute immediate внутри.
0
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 20:11  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
У вас какое-то неправильно представление об ADO.NET провайдерах.
О да)).

Цитата Сообщение от turbanoff Посмотреть сообщение
К базе/схеме, в кототорой вам нужно запустить скрипт.
В том-то и дело, что никакой базы нет, нужно ее "создать" внутри приложения.
Что вы имеете в виду под схемой?
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.05.2013, 20:13
Цитата Сообщение от umc55555 Посмотреть сообщение
В том-то и дело, что никакой базы нет, нужно ее "создать" внутри приложения.
Так вы и дистрибутив Oracle с программой будете распространять что ли?
Зачем вам создавать БД из программы?

http://ru.wikipedia.org/wiki/Схема_базы_данных
0
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 20:38  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Так вы и дистрибутив Oracle с программой будете распространять что ли?
Эммм. Вот тут вы меня в ступор вообще поставили). Зачем мне "распространять дистрибутив Oracle" ?

Цитата Сообщение от turbanoff Посмотреть сообщение
Зачем вам создавать БД из программы?
Ок, опишу свою прогу. Пишу (точнее, пытаюсь начать писать) что-то типа органайзера или ежедневника. Есть база данных контактов и событий. И вы предлагаете хранить эту базу на внешнем источнике (сервере) ? Если нет, то я совсем запутался).

Цитата Сообщение от turbanoff Посмотреть сообщение
http://ru.wikipedia.org/wiki/Схема_базы_данных
Со схемой тоже ступор, я даже не знаю как толком сформулировать свой вопрос).. Что вообще значит "коннектиться к схеме" ? То же самое, что к базе?


Цитата Сообщение от Педивикия
Схема (SCHEMA) — является одним из основных объектов базы данных Oracle.
С ваших слов.. получается, что нужно коннектиться к объекту базы данных .
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.05.2013, 20:49
Цитата Сообщение от umc55555 Посмотреть сообщение
И вы предлагаете хранить эту базу на внешнем источнике (сервере) ?
Это не я предлагаю - это основная концепция клиент-серверных СУБД, в число которых входит и Oracle.

Цитата Сообщение от umc55555 Посмотреть сообщение
С ваших слов.. получается, что нужно коннектиться к объекту базы данных
Иерархия объектов в Oracle:
База данных - Схемы (пользователи) - объекты схемы (таблицы, представления и т.д.)

БД обычно ставят в единственном экземпляре на выделенном сервере.
В этой БД создают одну или несколько схем.
И в каждой схему уже создают объекты, которые обычно используются в приложениях.

Приложения удаленно подключаются к БД, к конкретной схеме (под конкретным пользователем), и используют объекты схемы.

PS. Кто вас надоумил использовать Oracle для этой задачи?
0
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
22.05.2013, 21:08  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
PS. Кто вас надоумил использовать Oracle для этой задачи?
Никто, я сам додумался). Ну по-моему вполне логично, нет? Нужно сделать базу -> делаю модель в ERwin'е -> генерю код базы -> "интегрирую" базу в программу. То, что доктор прописал ведь! Лучше не придумаешь.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.05.2013, 22:21
Во-первых, Oracle стоит денег, причем не малых.
Во-вторых, "интегрировать" его в программы не получится

Есть гораздо более подходящие СУБД для вашего случая - SQLite, SQL Server Compact, Access и т.д.
1
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 225
23.05.2013, 01:33  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
"интегрировать" его в программы не получится
Окей. Жалко, что Оракулы не предусмотрели такую штуку.

Цитата Сообщение от turbanoff Посмотреть сообщение
Есть гораздо более подходящие СУБД для вашего случая - SQLite, SQL Server Compact, Access и т.д.
Склоняюсь к Access (другие в глаза не видел).
1. А если последний не установлен на компьютере пользователя, а моя программа ведет базу данных в файле Access, пользователю не нужно его устанавливать?
2. А как насчет такой же ситуации с остальными СУБД - SQLite, Server Compact?

3. Если использовать Access для моей базы, то она будет хранится во внешнем файле, другого варианта нет? Я хотел бы, чтобы без всяких внешних файлов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.05.2013, 01:33
Помогаю со студенческими работами здесь

Создать базу данных на сервере 1С, используя Oracle
Друзья! Есть 1) 1C:Предприятие 8.3 (сервер и все причиндалы) 2) СУБД Oracle Oracle Database 11g Express Edition И по...

Как соединиться базу данных SQL Developer (Oracle) в Delphi
Здравствуйте, уважаемые форумчане. Вопрос следующий: как подсоединить базу данных, созданную в SQL Developer с помощью ADOConnection в...

Может кто выгрузить базу данных 1c 7.7 SQL?
Может кто выгрузить базу данных 1c предприятие 7.7 SQL? Предоставлю файлы на мыло.

Кто-нибудь работал с Oracle JDeveloper???
Если кто работал хотелось бы обсудить некоторые вопросы олег

Кто-нибудь пишет код по памяти или кто помнит строку соединения к SQL на память?
Например, я пишу только копируя свои предыдущие работающие примеры. Т.е. у меня есть кучка кода, которая делает то-то и то-то, беру его из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru