Вопрос : Вопросы о SQLCommandBuilder - GetUpdateCommand, GetInsertCommand и GetDeleteCommand

По мере того как я вывесил в мой ранее вопрос меня имейте VB app 2005 показывает 3 поля от таблицы SQL-Сервера в DataGridView.  2 колонки там но видимы, включая главным образом ключа.  Пока внизу Кодий «работает» далеко как поручать изменения в управлении DataGridView к базе данных когда я щелкаю спасительной кнопкой, я не понимаю почему.  Я посмотрел CommandText для предмета UpdateCommand произведенного методом GetUpdateCommand и пока он был четок, я не smog сказать как он получал параметры после того как он заселен.  Я также не smog сказать как он ввел бы или уничтожил бы показатели но показалось class= " lineNumbers " >
1 >

    

'Объявлено в модуле «Globals»:
Общественное gdaMyDataAdapter как новое SqlDataAdapter
Общественное gdtMyDataTable как новое DataTable

'Заселите решетку…
Общественное Sub PopulateGrid ()

Тусклое sSQL как шнур
Тусклый cn как новое SqlConnection (MyConnectionString)
cn. Раскройте ()

sSQL = «ОТБОРНОЕ MyKey, col1, col2, col3, OtherKey ОТ MyTable ГДЕ OtherKey = 1234»

Тусклое cmdSelect как новое SqlCommand (sSQL, cn)
gdaMyDataAdapter.SelectCommand = cmdSelect

'Конечно мне нужно сделать эти здесь или если они противоречат с одними в «за исключением», то
Тусклое MyCommandBuilder как новое SqlCommandBuilder (gdaMyDataAdapter)
gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (поистине)

gdaMyDataAdapter.Fill (gdtMyDataTable)
MyDataGridView.DataSource = gdtMyDataTable

Подводная лодка конца

'За исключением.  Вызвано процедурой по случая щелчка кнопки….

Общественное Sub GridSave ()

Тусклое MyCommandBuilder как новое SqlCommandBuilder (gdaMyDataAdapter)

MyCommandBuilder.GetUpdateCommand ()

'Под 2 звоноками покажитесь, что не сделать НИЧЕГО.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

'Как испытание, я мог отвергнуть CommandText для предмета UpdateCommand DataAdapter как это:
gdaMyDataAdapter.UpdateCommand.CommandText = «»

iRows = gdaMyDataAdapter.Update (gdtMyDataTable)
gdtMyDataTable.AcceptChanges ()

Class= " ясное " >

I конца Sub

Where, котор я иду что я имею тревогу получить, что уточнение ввел что-нибыдь за исключением NULL для «OtherKey».  MyKey находится в основной таблице по мере того как колонка и она тождественности незримы в решетке.  Я имею потребителя добавить рядки сразу к решетке путем печатая на машинке значения в col1, col2 и col3.  Я имею «OtherKey», котор хранят в TextBox на Form1.  Я хотел был бы иметь «OtherKey» быть незрим в решетке и получать значение от перемеююого была установлена от TextBox.  Независимо от того, как я tweak УТОЧНЕНИЕ все, котор я кажется, что могу послать мою таблицу буду NULL.

If я мутноват или вам нужен больше info, пожалуйста препятствуете мне know.

Regards,
Eric
class=

Ответ : Вопросы о SQLCommandBuilder - GetUpdateCommand, GetInsertCommand и GetDeleteCommand

Прежде всего, эта линия не необходима:

gdaMyDataAdapter.UpdateCommand = MyCommandBuilder.GetUpdateCommand (поистине)

потому что SqlCommandBuilder принимает в настоящее время SelectCommand от DataAdapter передано к ему для того чтобы произвести необходимый InsertCommand, DeleteCommand, и UpdateCommand.  В виду того что DataAdapter было о справкой, изменения сделали внутри CommandBuilder теперь видимы к остальноям программы.

Likewise следующий не необходимы:

MyCommandBuilder.GetUpdateCommand ()

'Под 2 звоноками покажитесь, что не сделать НИЧЕГО.
MyCommandBuilder.GetDeleteCommand ()
MyCommandBuilder.GetInsertCommand ()

… для такой же причины.  Вы передаете DataAdpater к конструктор CommandBuilder, и все необходимый команды automagically установлены внутри CommandBuilder.

Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us