0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 3
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Функция update() адаптера не сохраняет изменения в БД19.04.2009, 16:57. Показов 12162. Ответов 14
Метки нет (Все метки)
Добрый день!
Создал в Visual Studio 2008 баззу данных, добавил в неё таблицу test c полями id типа int и name string. Создал типизированный Dataset, добавил в него оную таблицу. Далее на форму нанёс DataGridView, поставил в его свойство Datasourse таблицу test. Добавил кнопку. На нажатие кнопки повесил код:
После внесений изменений в DatagridView нажатие кнопки не вызывает сохранение данных. Попробовал в QueryBuilder проверить Insert команду адаптера, её текст:
Причём проверял что возвращает Update() - всегда возвращал число стро, которые надо было добавить/обновить. ConnectionString я не проверял, т.к. выборка проходит правильно, а у адаптера строка подключения одна для всех запросов. будьте добры, подскажите куда копать
0
|
19.04.2009, 16:57 | |
Ответы с готовыми решениями:
14
UPDATE не сохраняет изменения в БД Не получается записать через метод Update адаптера только обновленные записи DataTable ADODataSet не сохраняет изменения Не сохраняет в базу изменения |
МИР ВАШЕМУ ДОМУ!!!
|
||||||
19.04.2009, 18:43 | 2 | |||||
Копать конечно нужно, : ) но посмотри пож-та на этот пример.
0
|
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 3
|
|
20.04.2009, 15:59 [ТС] | 3 |
Не понятно к чему это...
пробовал вручную открывать соединение, Эффект тот же. проверял ConnectionString-в норме Добавлено через 17 часов 19 минут 13 секунд файл с ДБ кидался в каталог Debug или Release там ее и менял
0
|
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
|
|
21.04.2009, 08:06 | 4 |
0
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
21.04.2009, 10:12 | 5 |
не обращай на неё внимание, а со своего проекта НЕМЕДЛЕННО удали!
Добавлено через 4 минуты 51 секунду PADOCTb, для того чтобы работал Update и долго сним не возиться, то лучше создавать датасеты, адаптеры и соурсы дизайнером. Если есть у тя ггрид, то нажми на стрелку что вверху справа -> Add project dataSource -> database -> New Connection
1
|
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
|
|
21.04.2009, 12:24 | 6 |
Удалить я ее не могу так-как, после нее у меня обновлется GridView, когда я начал программировать на с#, примерно месяц назад, у меня тоже не обновлялись данные.
Может быть я и двигаюсь в неправильном напровлении но пока справляюсь с поставленными задачами, хотя иногда понимаю что-то какие-то действия я делаю не так. И хотел бы поднять в данной теме такое обсуждение как правильно использовать компоненты для работы с ADO.NET, т.к. я просмотрев разные темы форума понял что каждый работает по своим правилам. Я как програмист БД на VFP, переходящий c# и ADO, делаю так: Приложение запускается с проверкой данных пользователя на сервере, на главной форме у меня нет ни каких датасетов и адаптеров, при вызове какой-либо форме создаетется датасет, адаптер и прикручивается к элементам управления, если с этой формы нужно вызвать какой-то экземпляр с более подробной информации для редактирования, или справочник, то другой форме просто передается один-два параметра этого экземпляра, в которой существуют свои датасеты и адаптеры и они в свою очередь выбирают нужные данные с сервера, после сохранения и закрятия вызывается матод на подобие Form1_Load(null, null); все обновилось все довольны. Ну вот как так я начал работать. Готов принять разные критики и обсуждения.
0
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
||||||
21.04.2009, 13:20 | 7 | |||||
У адаптера есть свойство Fill. И если сдлеать
0
|
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
|
|
21.04.2009, 13:57 | 8 |
IT-Skyline,
Да я пробовал так, но почему-то он просто записывает еще раз в таблицу данный с сервера после выполнения метода, а не обновляет, может сначала Reset, или он вообще сбросит все параметры?
0
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
21.04.2009, 15:26 | 9 |
Update(Dataset.DataTable) -- передаёт все изменения таблицы на сервер
Fill(Dataset.DataTable) -- заполняет таблицу данными из сервера.
1
|
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
|
|
22.04.2009, 06:32 | 10 |
IT-Skyline,
тогда как просто обновить данные с сервера, ведь может на сервере уже появились новые данные от других юзеров?
0
|
МИР ВАШЕМУ ДОМУ!!!
|
|
22.04.2009, 11:17 | 11 |
Эта строчка вызывает метод загрузки формы т.е. без этого метода при добавлении данных в базу эти данные не будут отображаются в датагридвиавере. (типа "Обновить")
Добавлено через 15 минут 39 секунд К датагридвиаверу привяжи базу мастером как говорил IT-Skyline. (в правом верхнем углу щелкаеш по стрелочке ....). после завершения работы мастера автоматически создастся датасет и датаадаптер. Теперь для Update делаеш следующее: Ocon = new OleDbConnection(con); Ocom = new OleDbCommand(); Ocom.Connection = Ocon; Ocom.CommandType = CommandType.Text; Ocom.CommandText = "Update Reg set ball1tur = @ball where ID=@id";//@ball просто переменная regTableAdapter.Update(baseDataSet.Reg); //созданное само при отображении базы в гриде : regTableAdapter,baseDataSe этот код для кнопки сохранить в моем случае. УДАЧИ!!! если что пиши. при завершении мастера Добавлено через 2 минуты 20 секунд К датагридвиаверу привяжи базу мастером как говорил IT-Skyline. (в правом верхнем углу щелкаеш по стрелочке ....). после завершения работы мастера автоматически создастся датасет и датаадаптер. Теперь для Update делаеш следующее: Ocon = new OleDbConnection(con); Ocom = new OleDbCommand(); Ocom.Connection = Ocon; Ocom.CommandType = CommandType.Text; Ocom.CommandText = "Update Reg set ball1tur = @ball where ID=@id";//@ball просто переменная regTableAdapter.Update(baseDataSet.Reg); //созданное само при отображении базы в гриде : regTableAdapter,baseDataSe этот код для кнопки сохранить в моем случае. Сдесь я данные изменяю на самом датагридвиавере УДАЧИ!!! если что пиши.
0
|
5 / 5 / 0
Регистрация: 19.09.2008
Сообщений: 71
|
||||||
25.04.2009, 18:18 | 12 | |||||
У меня тоже есть вопрос по обновлению.Хоть убейте) не могу понять почему не работает такой код
0
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
25.04.2009, 19:54 | 13 |
0
|
5 / 5 / 0
Регистрация: 19.09.2008
Сообщений: 71
|
|
25.04.2009, 20:17 | 14 |
Да процедура при выполнении cmd.ExecuteNonQuery();(из примера который я привел) добавляет новые данные, но фактически в базе данных новые данные не появляются
0
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
02.05.2009, 08:21 | 15 |
SqlDataAdapter.Update делает теже манипуляции по обновлению, что и ручками, через SqlCommand. С той разницей, что в нем содержатся и insert, и update, и delete запросы. При этом передавая ему DataTable, он сам находит строки, которые подлежат вставке/обновлению/удалению и производит все действия сразу. Иначе все это вы будете делать это ручками. Это не сложно, но нужно ли?
1
|
02.05.2009, 08:21 | |
02.05.2009, 08:21 | |
Помогаю со студенческими работами здесь
15
Нажимаю изменения параметров адаптера, а там пусто Выясните, сохраняет ли булева функция 0, 1, является ли функция линейной, монотонной, само двойственной? не сохраняет изменения Тип данных Builder не сохраняет изменения в проекте Не сохраняет изменения в формате csv Сохраняет изменения в таблице по настроению Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |