Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как посмотреть запрос CommandBuilder? OleDB 
:(
    Опции темы
artstalker
Дата 3.12.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 5.2.2009

Репутация: нет
Всего: нет



Есть база данных Access, и её проекция в программе - DataSet. Необходимо выполнять синхронизацию изменений в DataSet с БД(insert, delete, update). Юзаю OleDbDataAdapter+OleDbCommandBuilder. Изменение строк и удаление нормально проходит. А вот на добавлении возникает исключение "Ошибка синтаксиса в инструкции INSERT INTO".
Вопрос: как просмотреть сгенерированную через OleDbCommandBuilder команду? Вот такое ощущение что читал про это уже в какой-то книге. Там как раз пример был как в отладчик выводить все SQL команды, но где не помню...

Это сообщение отредактировал(а) artstalker - 3.12.2009, 00:45
PM MAIL   Вверх
tol05
Дата 3.12.2009, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



через свойство OleDbDataAdapter.InsertCommand наверное можно посмотреть CommandText 


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
artstalker
Дата 3.12.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 5.2.2009

Репутация: нет
Всего: нет



Вот так как раз не получается. Там  insertcommand, updatecommand и deletecommand равны null. Видимо там какой-то другой механизм взаимодействия(OleDbDataAdapter и OleDbCommandBuilder)
PM MAIL   Вверх
tol05
Дата 3.12.2009, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



странно.. в msdn написано что можно.
OleDbCommandBuilder.GetInsertCommand - метод
вот еще пример


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
artstalker
Дата 3.12.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 5.2.2009

Репутация: нет
Всего: нет



Спасибо, этот метод работает. Я начал в чём ошибка. CommadnBuilder формирует такую строку на Insert:
"INSERT INTO Users (User, Pass, Role, Name, ID) VALUES (?, ?, ?, ?, ?)"
При добавлении строки провайдер ругается.
Когда я ручками прописал команду в таком виде:
"INSERT INTO [Users] ([User], [Pass],[Role],[Name],[ID]) VALUES (@User, @Pass, @Role,@Name,@ID)", то всё работает. Т.е. дело в скобках. Мне не известно почему...
И тогда такой вопрос:
посколько из-за описанной выше причины я не могу воспользоваться CommadnBuilder-ом, как мне руками прописать запросы на встаку, изменение и удаление? Дело в том что аргументы dataGridview передаёт же автоматически. И вот как это согласовать в запросе?
PM MAIL   Вверх
tol05
Дата 4.12.2009, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



Цитата(artstalker @  3.12.2009,  21:42 Найти цитируемый пост)
как мне руками прописать запросы на встаку, изменение и удаление? 

а зачем? Если dataGridview биндится через OleDbDataAdapter к базе данных, то и все команды на insert, update и delete будут автоматически генерироваться самим OleDbDataAdapter-ом.

Последовательность работы такая:
создаем объекты Connection и SelectCommand, создаем OleDbDataAdapter, делаем запрос к базе и получаем bindingSource для dataGridview
а потом просто вызываем время от времени OleDbDataAdapter.Update()

вот и все. если адаптер получил данные из определенных таблиц (используя только select команду), то он же и сможет эти таблицы правильно обновить.

вот простой пример

или вы хотите сделать выборку из БД по одним критериям, а обновить - совершенно другие данные и по совершенно другим критериям?   )


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.