Помогите разобраться ADO.NET - работает только SELECT

Димитрий_Галин
Дата: 25.05.2006 20:10:18
Создаю приложение в VS 2005 на C# с подключением к MS SQL 2005.
В dataset набрал три таблицы связанные по ключи.
В форму включил три DataGrid - для каждой таблицы и кнопку сохранения
            DialogResult result;
            if( exchDataSet.HasErrors){
                result = MessageBox.Show(this, 
                    "There are errors", "Error", MessageBoxButtons.OK);
                this.Close();
            }
            if (exchDataSet.HasChanges(DataRowState.Modified | DataRowState.Added | DataRowState.Deleted))
            {
                result = MessageBox.Show(this, "Save your changes?", "Confirm your changes", MessageBoxButtons.YesNoCancel);

                if (result == DialogResult.Yes)
                {
                    exchDataSet.AcceptChanges();
                }
                else if (result == DialogResult.No)
                {
                    exchDataSet.RejectChanges();
                }
            }
Это единственный код в приложении, писаный руками.

Но никакие изменения в базе не выполняются.
Уверен что упустил какую-то мелочь. Но какую?
Извините если вопрос Вас не порадует.
saint
Дата: 26.05.2006 00:11:41
стандартная бородатая трабла. В поиск.

надо создать адаптер, прикрутить к нему команды на insert/update/delete и
adapter.Update()
Димитрий_Галин
Дата: 26.05.2006 00:43:46
saint
стандартная бородатая трабла. В поиск.

надо создать адаптер, прикрутить к нему команды на insert/update/delete и
adapter.Update()


Спасибо за Ваше внимание, к сожалению не нашел ответ на свой вопрос.
Дело в том, что вариант с созданием insert/update/delete я нашел, сделал на своей базе и он действительно работает.

НО!

Судя по тому, что в коде, сгениророванном "под dataSet" есть куча кода - готовые команды, адаптер. Если они действительно будут работать, это сэкономит мне уйму времени. Хотелось бы проверить.

Я даже нашел (уже после того как выставил вопрос) следущее
http://msdn.microsoft.com/library/rus/default.asp?url=/library/rus/cpref/html/frlrfsystemdatadatasetclassgetchangestopic.asp
А как объявить правильно myOleDbDataAdapter (мне нужен наверно SqlDataAdapter) и присоединить к Connection пока не разобрался.
winsky!
Дата: 26.05.2006 10:53:31
adapter.Update();
а не exchDataSet.AcceptChanges();
if (result == DialogResult.Yes)
                {
                   // exchDataSet.AcceptChanges();
                adapter.Update();//я бы сюда обработку исключений вставил бы 
}
только надо убедится, что у вас сгенерились команды инсерта, апдейта и делита... (saint вам уже писал)
Димитрий_Галин
Дата: 27.05.2006 19:20:18
Проблема осталось.
Да надо сделать Adapter.Update();
Но где его взять?
DataSet доступен.
Внутри кода датасета есть адаптеры на каждую таблицу - отдельный класс.

Но им надо передавать таблицу в качестве параметра.
Короче, помогите, кто решил такую проблему.
Димитрий_Галин
Дата: 28.05.2006 01:31:17
Разобрался
this.regionTableAdapter.Update(this.northwindDataSet.Region);
http://msdn2.microsoft.com/en-us/library/ms233812(VS.80).aspx
Проверено работает только использовать СВОИ классы