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

В контекстном меню нет пункта "Добавить триггер"

28.04.2015, 14:54. Показов 1211. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Установлены Oracle 11g, PL/SQL и Visual Studio 2010.
Создал dataset для всех моих таблиц. Перетащил на форму таблицу, добавляю в неё данные, но не могу поставить null в id. Хочу так делать, потому что у меня есть триггер, который автоматически генерит id из sequance. В Обозревателе серверов, если зайти в мою БД и эту таблицу, триггера там тоже не видно. На сайте MSDN прочитал, что можно кликнуть правой кнопкой мыши на таблицу, после чего в контекстном меню нажать Добавить триггер, но такого у меня тоже нету.
Также триггер INSTEAD OF дальше будет нужен для редактирования представлений.
Или это все не работает в dataset и надо делать руками?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2015, 14:54
Ответы с готовыми решениями:

Нет пункта Открыть таблицу в контекстном меню
Здравствуйте! Подскажите как сделать так чтобы в sql server 2008 появился пункт в контекстном меню открыть таблицу? В sql server 2005 он...

Создание пункта в контекстном меню
Здравствуйте, открытие файлов .pdf настроил по умолчанию программой Foxit Reader, для открытия другого файла .pdf в другим приложением...

Создание непростого пункта в контекстном меню, как?
Здравствуйте! В чем собственно дело... Значит я хочу создать на рабочем столе 3 папки - что-то вроде "Выполненное"...

7
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 15:16
Цитата Сообщение от грик Посмотреть сообщение
Или это все не работает в dataset и надо делать руками?
В жисть не стал бы строить структуру БД через какой-то dataset. Проектирование БД - это отдельно, клиентская программа - отдельно. Все, что создается в БД, делай через родные оракловые инструменты. Заодно и протестировать там же сможешь. А то когда не знаешь, чья ошибка проявляется, базы данных или своей программы, фиг разберешься.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 15:18  [ТС]
Так я и хочу это все делать в PL/SQL. Но триггеры не видит Visual Studio.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 15:22
Цитата Сообщение от грик Посмотреть сообщение
Но триггеры не видит Visual Studio.
А зачем ему их видеть? Триггер все равно вызывается внутри Oracle, причем не явно, а по событию (например, INSERT). Поэтому видит он их или нет - фиолетово.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 15:24  [ТС]
Тогда мне нельзя использовать Dataset? Потому что он мне не дает вставить null в id, как я написал в первом сообщении.
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
28.04.2015, 16:17
Цитата Сообщение от грик Посмотреть сообщение
Тогда мне нельзя использовать Dataset?
А ты хотел бы, чтобы Dataset не только видел триггер, но еще и интерпретировал текст в нем? Ведь в триггере может делаться все что угодно и интерпретировать исходный текст (особенно большой) - задача нетривиальная даже для человека. А насчет "нельзя вставлять NULL" - задача частая и наверняка имеет решение. Просто я никогда не работал в C#. В Delphi я бы просто ручками написал INSERT, всего и делов. Альтернатива - не пользовать триггер, а дергать sequence самому и записывать значение в id.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
28.04.2015, 16:22  [ТС]
Спасибо. Наверное, буду руками это все делать через insert, чтобы dataset не видел схемы.
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 14
03.05.2015, 21:31  [ТС]
Сделал так. Вывожу в грид:
C#
1
2
3
4
5
6
7
8
9
10
11
OracleCommand cmd = new OracleCommand("SELECT ID_TEAM,TEAM_NAME AS Назва,COUNTRY AS Країна,CITY AS Місто,OFFICE_PHONE AS Телефон_офісу FROM max.team", conect.con);
        oda = new OracleDataAdapter();
        oda.SelectCommand = cmd;
        oda.SelectCommand.CommandType = CommandType.Text;
        bild = new OracleCommandBuilder(oda);
        oda.Fill(ds);
        if (ds.Tables.Count > 0)
        {
          dataGridView1.DataSource = ds.Tables[0].DefaultView;
          dataGridView1.Columns[0].Visible = false;
        }
Сохраняю обновление по кнопке:
C#
1
2
3
4
oda.Update(ds);
        OracleCommand cmd = new OracleCommand("COMMIT", conect.con);
        cmd.ExecuteNonQuery();
        cmd.Dispose();
Удаляю по кнопке:
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < dataGridView1.RowCount; i++)
      {
        bool t = true;
        for (int j = 1; j < dataGridView1.ColumnCount; j++)
        {
          if (!dataGridView1[j, i].Selected)
            t = false;
        }
        if (t) dataGridView1.Rows.RemoveAt(i);
      }
Когда таблица в запросе, то все нормально, могу при вставке вводить NULL в ID_TEAM (есть триггер, который генерит id), удалять и редактировать. Если же написать в SELECT представление (у которого есть триггеры INSTEAD OF на вставку, удаление и обновление), то могу добавлять, но когда редактирую или удаляю, вылетает ошибка: Dynamic sql generation failed. No key information found. Если искусственно задать id как один из столбцов, то оно уже не даст вставить NULL при добавлении, но при этом работает удаление и редактирование.

Добавлено через 8 часов 1 минуту
Пишу свой update для адаптера, есть свой select.
C#
1
2
3
4
5
6
7
8
9
OracleCommand cmd = new OracleCommand("SELECT ID_FOOTBALLER, SURNAME AS Прізвище, NAME AS Ім_я, PATRONYMIC AS По_батькові,DATE_OF_BIRTH AS Дата_народження,ROLE AS Позиція,NATIONALITY AS Національність,WORKING_LEG AS Робоча_нога, GROWTH_SM AS Зріст_см, WEIGHT_KG AS Вага_кг, RATABLE_VALUE AS Оціночна_вартість, ID_CURRENT_TEAM AS ід, TEAM_NAME AS Клуб FROM max.adm_potential_footballer", conect.con);
        OracleCommand upd = new OracleCommand("UPDATE adm_potential_footballer SET SURNAME=:SURNAME, NAME=:NAME, PATRONYMIC=:PATRONYMIC, DATE_OF_BIRTH=:DATE_OF_BIRTH,ROLE=:ROLE,NATIONALITY=:NATIONALITY,WORKING_LEG=:WORKING_LEG, GROWTH_SM=:GROWTH_SM, WEIGHT_KG=:WEIGHT_KG, RATABLE_VALUE=:RATABLE_VALUE, ID_CURRENT_TEAM=:ID_CURRENT_TEAM, TEAM_NAME=:TEAM_NAME WHERE ID_FOOTBALLER=:ID_FOOTBALLER", conect.con);
 
        oda = new OracleDataAdapter();
        oda.SelectCommand = cmd;
        oda.SelectCommand.CommandType = CommandType.Text;
        oda.UpdateCommand = upd;
        oda.UpdateCommand.CommandType = CommandType.Text;
        bild = new OracleCommandBuilder(oda);
Как правильно инициализировать параметры запроса? Мне нужно их инициализировать столбцом из datagridview.
Я понимаю, что это неправильно, потому что не работает, но все же...
C#
1
upd.Parameters.Add(new OracleParameter("SURNAME", dataGridView1.Columns[1]));
Грид заполняется так:
C#
1
2
3
4
5
oda.Fill(ds);
if (ds.Tables.Count > 0)
        {
          dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }
Как это сделать правильно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2015, 21:31
Помогаю со студенческими работами здесь

Как при нажатии пункта в контекстном меню вывести что то на окно
Как при нажатии пункта в контекстном меню вывести что то на окно, читал документацию не нашёл. например нажатие на эксель пишет в label...

Создание своего пункта в контекстном меню и выполнение привязанной к этому пункту задачи
Здравствуйте! Подскажите, пожалуйста, как создать свой пункт во всплывающем меню? Excel MS Office 2007. Комплексная задача такова....

Нет блокнота в контекстном меню
Как восстановить в контекстном меню &quot;Создать - Текстовый файл txt&quot;?

2 пункта "открыть" в контекстном меню
столкнулся с ситуацией - у всех папок в проводнике в контекстном меню оба первых пункта - &quot;Открыть&quot;. Причем верхний написан жирно...

В контекстном меню файлов образов нет Alcohol120%
Всем привет! Проблема, собственно, вот в чем. При вызове контекстного меню на файлах iso и mdf в нем нет пунктов &quot;смонтировать...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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