Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Базы данных под .NET > Данные не сохраняються в БД |
Автор: Chef 14.12.2007, 08:25 | ||||||
Да простят меня Модераторы ![]() ![]() Проблема такая: После выполнения SQL команды, если не закрывать текущее соединение с БД, то изминения там присутствую, а после закрытия они магическим образом исчезают ![]() В БД я новенький, так что PLEASE помогите Строка SQL и моя процедурка
Код процедурки выриат 1
Код процедурки выриат 2
|
Автор: thomas 14.12.2007, 09:47 | ||||||||
Chef, Приветствую. Если Вы поступаете примерно так
После того как заполнили таблицу в ДатаСет отобразите данные из нее в DataGriedView или других контролах на форме. Произведите необходимые изменения данных. И после этого вызовите метод Update для вашего ДатаАдаптера. Команду на Update он сгенерирует сам, вам ничего писать не надо.
В крайнем случае создайте обьект CommandBuilder и поручите ему создать команду Update
Можно перед этим еще выполнить проверку на изменения в ДатаСет
Успехов. |
Автор: Chef 14.12.2007, 10:17 |
thomas, Спасибо за ответ. А если мне не надо выводить таблицу в ГРИД, можно ли обойтись без "SELECT * FROM ......" Просто послать запрос SQL INSERT , UPDATE |
Автор: thomas 14.12.2007, 14:53 |
Chef, Приветствую. При добавлении строк в таблицу вызывать данные в ДатаСет нет необходимости. Можно просто дать пользователю ввести данные в текстбоксы, например, и подставив эти значения в запрос INSERT INTO выполнить его при нажатии кнопки или Энтер на последнем текстбоксе. Для Update по любому надо сначала получить данные из таблицы через селект(это может быть одна строка), показать их пользователю, он что-то там отредактировал и жмет на кнопку сохранить. И тут эти все данные подставляются в запрос Update и он выполняется(это если одна строка). Или вызывается метод Update твоего ДатаАдаптера. И он уже сам выполняет обновление. |
Автор: Chef 14.12.2007, 18:32 |
thomas, Еще раз спасибо Сейчас попробую, об результате сообщу |
Автор: Chef 14.12.2007, 19:51 | ||
thomas, Что то у меня не получилось вот пример кода
Почему не меняет !!!!!! |
Автор: thomas 14.12.2007, 21:50 | ||
Chef, Ответ http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1016680&SiteID=1 А вообще почему такой "извращенный" способ поменять значение в поле строки? Почему не написать просто:
Добавлено через 11 минут и 53 секунды Chef, вот тебе http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/vbcon/html/vboriIntegratingDataVB.asp на раздел msdn о работе с данными. Почитай, примеры довольно простые и понятные. А http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/vbcon/html/vbtskupdatingexistingrecordsindataset.asp про обновление данных |
Автор: Chef 14.12.2007, 22:49 | ||
Thomas Похоже мы только с тобой тут и переписываемся ![]() Мож я немного тупой, может просто сижу только после 23 00 ![]() С ДатаСет все ок, за ето тебе большое спасибо ! Но теперь он не хочет update' тить Вот многострадальный код
Thomas, Если не затруднит напиши работоспособный кусок кода, подобный этому ПОДОЖДИ ЕЩЕ НЕ ЗАХОДИЛ ПО ТВОИМ ССЫЛКАМ мож все проясниться |
Автор: thomas 14.12.2007, 22:59 |
Chef, вот sQuery это покажи. Если это select, то должен выполняться метод update для датаАдаптера. Добавлено @ 23:02 ЗЫ а ты вообще учишься или как? Если учишься, то где и чему? Не плохо бы твою программку увидеть, что изучаете? Можешь в приват отписать. Тогда понятнее будет, о чем с тобой речь вести. |
Автор: Chef 15.12.2007, 10:14 |
Thomas приветсвую. Учусь на 3 курсе по спецальности Информатик. Углубления в базы данных небыло, но как я понимаю вещь это полезная, и мне потом ой как пригодиться. Поэтому я сижу и занимаюсь само обучением. Для начала придумал себе програмку такую: типа База Муз Дисков Состоит из 4 таблиц tbl_group groupID groupName Счетчик VCHAR tbl_disk diskID diskName Счетчик VCHAR tbl_MusicName MusicID musicName Счетчик VCHAR tbl_Music MusicID MusicName MusicDisk MusicGroup Счетчик INT INT INT string sQueryString = @"SELECT MusicName FROM tbl_MusicName WHERE MusicID = 7" Возвращает 1 запись которую нужно изменить Команда adapter.UpdateCommand = builder.GetUpdateCommand(); вызывает ошибку Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information. |
Автор: thomas 15.12.2007, 16:11 | ||||
Chef, Привет. Вот теперь ронятно
В запросе на выборку не было первичного ключа, поэтому и не генериться команда. Напиши так
|
Автор: Chef 15.12.2007, 20:12 | ||
Thomas, Здравствуй Из составления запроса я понял ключевое поле обязателно, да ? Теперь все идет без ошибок, в DataSet все меняеться, но в базу данных он ничего не заносит ![]()
Теперь в чем может быть проблема |
Автор: Chef 18.12.2007, 10:17 | ||
Добавил команду обнавления в адаптер, результата ноль !!!! Люди срочно помогите !!! ![]() ![]()
|
Автор: Enuviel 18.12.2007, 15:26 |
Вот тут точно косяк adapter.InsertCommand=builder.GetUpdateCommand(); Должно как минимум быть adapter.UpdateCommand = builder.GetUpdateCommand(); |