Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Update / 10 сообщений из 10, страница 1 из 1
29.03.2004, 12:00
    #32460383
aoalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
Проблема в следующем:
заполняю dataSet, изменяю данные, пытаюсь обновить базу данных.
Выскакивает ошибка: Dynamic SQL generation for UpdateCommand is not supported against a SelectCommand that does not return any key column information.
Вот select:
"Select ID,SENDER,DATA,PARSERED From archive Where PARSERED = 0 Order By ID"
Проблема по видимому в том, что я генерю ID по триггеру Before Update и генератор. До этого все работало. Но в чем ошибка и как с ней бороться не пойму.
Кто сможет помочь, заранее спасибо.

FbCommandBuilder builder = new FbCommandBuilder(dataAdapter);
try
{
dataAdapter.Update(dataSet,"archive");
}
...
Рейтинг: 0 / 0
29.03.2004, 16:37
    #32461074
sql2k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
в твоей ошибке явно сказано что "SelectCommand that does not return any key column information" ключевое слово здесь key - простите за тавтологию :))
то есть для того чтобы идентифицировать строку АВТОМАТИЧЕСКИ
так как это делаете вы (то есть не явно указываете как это можно было бы сделать

SQLDataAdapter.UpdateCommand="UPDATE archive SET ID=p1"
SQLDataAdapter.Parameters.Add(p1).......
............как то так...............)

вместо этого вы делаете УНИВЕРСАЛЬНУЮ а значит не самую лучшую композицию, когда вы динамически определяете, ЧТО у вас будет в гриде (селектом) и соответсвенно ЧТО вы будете апдейтить.
так как вам ЯВНО написали в перечисленных вами полях НЕТУ ни одного ключевого (!!!) поля - вам придется либо отказатся от билдера комманд, либо отказатся от БД триггера на ID поле - что само по себе, если не нонсенс - то во всяком случае - одна из причин для тормозов и некорректной работы...
---
к примеру могу сказать еще, что я столкнулся с этим сообщением, когда писал компонент грид с панелью кнопок, в которых уже были поиск, сортировка, добавка записей, удаление записей, апдейт естессно, экспорт данных в эксель, текстовый файл,...... ну и прочее прочее.........(че то я расписался
так вот этому компоненту требовалость только строка подключения и запрос на выборку - ну и при необходимости можно было указать свойства некоторых полей, ну какие то запретить на ввод, какие то поставить в identity и прочее....
так вот для такой конструкции понадобился билдер комманд,
можно конечно было написать свой анализатор селект запроса
ну уж больно не хотелось
и тут я понял, что я обязан в селекте передавать ему КЛЮЧЕВОЕ поле... кроме того я обнаружил еще одну интересную особенность, связанную с свойствами полей в DataTable, но я не буду писать - может кто сам найдет... на мой взгляд это глюк - надо будет проверить на других машинах
...
Рейтинг: 0 / 0
29.03.2004, 17:24
    #32461198
aoalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
Спасибо за совет, проблема была в том, что поле id задал как уникальное, а ни как первичное и не заметил этого. А на счет использования builder`a, должно все работать и так, оно и работает :).
...
Рейтинг: 0 / 0
29.03.2004, 17:43
    #32461239
sql2k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
а я не говорил что работать не будет... :)
не работать и не корректно работать - разные вещи, как мне кажется
...
Рейтинг: 0 / 0
29.03.2004, 17:45
    #32461243
sql2k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
а я что сказал - я сказал что он не определяет ключа
вы сделали первичный ключ и все заработало - разве не так?
...
Рейтинг: 0 / 0
29.03.2004, 18:06
    #32461292
aoalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
Ошибка, которая вылезала у меня, была связана с "неправильной" БД.
А dataBuilder это средство ADO.NET.
Работает оно более или менне, хотя реализовано не совсем отимально (мое мнение).
Что касается ключевого поля: в данном случае разницы я не вижу, если оно получает ключевое поле из БД, то оно его туда и запишет.
...
Рейтинг: 0 / 0
30.03.2004, 09:19
    #32461700
sql2k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
слов нет!!!
с формальной логикой БОЛЬШИЕ проблемы...
...
Рейтинг: 0 / 0
30.03.2004, 10:01
    #32461743
aoalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
sql2k вам придется либо отказатся от билдера комманд, либо отказатся от БД триггера на ID поле
Ладно, отвечу за логику: вот это тоже особой логикой не страдает, хотя сам совет правильный. Чем больше прописывать руками, тем выше надежность (или я опять чего не понял).
А логика моя заключается в том, что ошибка заключалась в другом, в самой БД.
...
Рейтинг: 0 / 0
30.03.2004, 13:37
    #32462176
sql2k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
автортак как вам ЯВНО написали в перечисленных вами полях НЕТУ ни одного ключевого (!!!) поля

ВАМ НАПИСАЛИ НЕТ УКАЗАННОГО КЛЮЧЕВОГО ПОЛЯ!
ВЫ ЖЕ НЕ ПРИВЕЛИ СКРИПТ, КОТОРЫМ ВЫ СОЗДАЕТЕ ТАБЛИЦУ archive, СООТВЕТСВЕННО Я НЕ МОГ ЗНАТЬ PRIMARY KEY У ВАС ТАМ ИЛИ UNIQUE НА ПОЛЕ ID...
Я ВАМ СКАЗАЛ ГДЕ НАДО РЫТЬ - ТО ЕСТЬ ВКЛЮЧИТЬ В ЗАПРОС КЛЮЧЕВОЕ ПОЛЕ
ИЛИ ОТКАЗАТЬСЯ ОТ БИЛДЕРА...
КАК ЭТО СДЕЛАТЬ - ВАМ РЕШАТЬ!
ЕСЛИ ОТ БИЛДЕРА ОТКАЗЫВАТСЯ НЕ ХОТИМ - ЗНАЧИТ НАДО ВВОДИТЬ КЛЮЧЕВОЕ ПОЛЕ - ОПЯТЬ ПОВТОРЯЮ Я НЕ ЗНАЮ ЕСТЬ ОНО У ВАС В ТАБЛИЦЕ ИЛИ НЕТ - ТО ЧТО ПОЛЕ ИМЕЕТ ИМЯ ID НИ О ЧЕМ НЕ ГОВОРИТ...
если хотите использовать поле ID как ключевое используйте, хотите завести другое - заводите - но его тогда придется вписывать в запрос...

вы спрашиваете: я сижу дома, а мне надо на работу. что делать?
я отвечаю: либо вызовите такси, либо езжайте на общественном транспорте
вы говорите: не, не катит!!! потому что я то дома, а общественный транспорт и такси на улице!

вы спросили в чем проблема: я ответил - в запросе СЕЛЕКТ нет ключевого поля. (точнее даже не я ответил, вам все ответил .Net Framework) ВСЕ!
теперь только так буду отвечать - а то потом начинаеш давать объяснения - и некоторые люди не всасывают тему...
...
Рейтинг: 0 / 0
30.03.2004, 15:57
    #32462494
aoalex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update
Да успокойся ты. Совет понял и принял к сведению. И объяснил, что ошибка росла из другого места.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Update / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]