Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 11
1

INSERT в Oracle

27.06.2013, 09:47. Показов 3818. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую!
Встала проблема во вставке данных в Oracle.
Пишу код
C#
1
2
3
4
5
OracleCommand oraCmdInsert;
                string query;
                query = "insert into TST VALUES (\"qqqqq\",\"wwwww\",\"xxxxxx\")";
                oraCmdInsert = new OracleCommand(query, oracleConn);
                oraCmdInsert.ExecuteNonQuery();
ИЛИ
C#
1
2
3
4
5
OracleCommand oraCmdInsert;
                string query;
                query = "insert into TST (V1,V2,V3) VALUES ('qqqqq','wwwww','xxxxxx')";
                oraCmdInsert = new OracleCommand(query, oracleConn);
                oraCmdInsert.ExecuteNonQuery();
Оба варианта выдают ошибку ORA-00984 Column not allowed here. Подумал, что может проблема в том, что не поставил в конце строки ";" начал выдавать ошибку ORA-00911: invalid character.
Не могу понять в чем проблема. Через Oracle SQL Developer этот же запрос вставляется без проблема.
Не откроете мне глаза в чем же дело?
Формат столбцов в таблице VARCHAR2(128 BYTE)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2013, 09:47
Ответы с готовыми решениями:

Oracle insert hex value
добрый день хочу вставить hex в таблицу, а именно в поле = 1 byte какой тип поля лучше выбрать...

Oracle trigger insert update
Уважаемые знатоки! имеется таблица create table UM_SESSION ( SESSION_ID NUMBER not null, ...

VB & Oracle ошибка: Run-time error '3155' ODBC--insert on a linked table '???' failed.
Уважаемые Дамы и Господа! Столкнулся с такой проблемой: У меня есть база Oracle -- Create...

Перенос параметра при INSERT в другой запрос INSERT
Здравствуйте. Есть таблица Сlient, в которую при INSERT ClientID присваивается инкрементом. На...

5
Эксперт Java
4091 / 3825 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
27.06.2013, 09:57 2
Второй вариант должен работать.
Может вы проект не пересобрали после изменения? Попробуйте сделать полную пересборку.

И вы уверены что ошибка возникает именно в этом месте?
0
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 11
28.06.2013, 09:40  [ТС] 3
Проект пересобирал. Да и он ведь при запуске проекта всегда перезапускается или я что-то путаю? А в другом месте ошибки и не может быть. У меня по кнопке выполняется только эта команда.
Но я решил проблему с помощью параметризированного запроса:
C#
1
2
3
4
5
6
7
8
OracleCommand oraCmdInsert;
                string query;
                query = "insert into TST VALUES(:1, :2, :3)";
                oraCmdInsert = new OracleCommand(query, oracleConn);
                oraCmdInsert.Parameters.Add(":1", OracleType.VarChar, 128).Value = "San Francisco";
                oraCmdInsert.Parameters.Add(":2", OracleType.VarChar, 128).Value = "Moscow";
                oraCmdInsert.Parameters.Add(":3", OracleType.VarChar, 128).Value = "Perm";
                oraCmdInsert.ExecuteNonQuery();
Сейчас вставка происходит даже без COMMIT'а

Добавлено через 23 часа 24 минуты
Господа, а можно как -то указать значение параметра в самой строке запроса?
что-то типа:
C#
1
2
3
4
5
6
7
8
                OracleCommand oraCmdInsert;
                string query;
                query = "insert into TST VALUES(:1 = Значение, :2 = значение, :3 = значение)";
                oraCmdInsert = new OracleCommand(query, oracleConn);
                oraCmdInsert.Parameters.Add(":1", OracleType.VarChar, 128);
                oraCmdInsert.Parameters.Add(":2", OracleType.VarChar, 128);
                oraCmdInsert.Parameters.Add(":3", OracleType.VarChar, 128);
                oraCmdInsert.ExecuteNonQuery();
Или наоборот указать тип пересылаемых данных в строке запроса
C#
1
2
3
4
5
                OracleCommand oraCmdInsert;
                string query;
                query = "insert into TST VALUES("1 Значение".Тип данных, "2 Значение".Тип данных, "3 Значение".Тип данных)";
                oraCmdInsert = new OracleCommand(query, oracleConn);
                oraCmdInsert.ExecuteNonQuery();
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
28.06.2013, 09:45 4
Цитата Сообщение от Himu
можно как -то указать значение параметра в самой строке запроса
Тогда никаких параметров не будет, будут литералы (по типу твоего второго варианта в первом посте).
Параметры нужны для повторного использования запросов в Oracle (поскольку они кэшируются на сервере). Если это почему-то не нужно, то и параметры не нужны

Цитата Сообщение от Himu
Или наоборот указать тип пересылаемых данных в строке запроса
Нет, с типами Oracle разбирается сам
0
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 11
28.06.2013, 10:51  [ТС] 5
Цитата Сообщение от Grossmeister Посмотреть сообщение
Параметры нужны для повторного использования запросов в Oracle (поскольку они кэшируются на сервере). Если это почему-то не нужно, то и параметры не нужны
у меня он из под C# почему-то не вставляет данные, если я не использую параметры. Выдает ошибку: 00984 column not allowed here
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
28.06.2013, 10:56 6
Цитата Сообщение от Himu
у меня он из под C# почему-то не вставляет данные, если я не использую параметры
Тут с C# надо разбираться. По идее должно работать хоть с параметрами, хоть без
0
28.06.2013, 10:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2013, 10:56
Помогаю со студенческими работами здесь

Как программно отловить Selection.Insert Shift:=xlDown , Selection.EntireRow.Insert?
Как программно отловить Selection.Insert Shift:=xlDown , Selection.EntireRow.Insert? Надеюсь, что...

Какими средствами Oracle экспортировать данные из таблицы Oracle в dbf-файл?
Здравствуйте! Не подскажите чайнику какими средствами Oracle экспортировать данные из таблицы...

Соединение к Oracle 11g XE из сервера приложений Oracle Weblogic Server 10.3.5.0
здравствуйте уважаемые форумчане! не знаю к какому разделу подходит эта тема но все равно.... :)...

Ошибка подключения к базе Oracle DB Express 11g через Oracle Data Integrator
Приветствую. На работе дали задание: установить Oracle Data Integrator и создать стенд с...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru