Занести данные из VB.Net в базу данных..туплю))

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Занести данные из VB.Net в базу данных..туплю))

Сообщение Loiste » 24.10.2005 (Пн) 9:22

Есть OleDBDataAdapter3, DataSet11 и таблица "Разделы" (и в базе и в DataSet11 называется одинаково) c двумя полями КодРаздела и НазваниеРаздела.

Подключаю все, заполняю DataSet11 и читаю данные из таблицы таким образом

Код: Выделить всё
DataSet11.Разделы.НазваниеРаздела()


Дальше использую это значение в полях, в дереве и где мне понадобится.

А как можно изменить значение в таблице баз данных, добавить или удалить строку. Скажем, если у меня есть два текстовых поля и кнопка. По щелчку кнопки добавить строку с введенными в поля значениями в базу данных, к которой подключен адаптер..

Замучилась уже разные варианты пробовать...откровенно торможу...подскажите, пожалуйста!!

Собственно, применяю такой код

Код: Выделить всё
Dim cRow As DataRow
cRow = DataSet11.Tables("Разделы").NewRow
cRow.BeginEdit()
cRow("КодРаздела") = DataSet11.Tables("Разделы").Rows.Count + 1
cRow("Название раздела") = AddNode.Text
cRow.EndEdit()
DataSet11.Tables("Разделы").Rows.Add(cRow)
OleDbDataAdapter3.Update(DataSet11)


Проблема заключается в поле КодРаздела. Если в базе данных я выставляю его тип как Счетчик, то новые строки добавляются без проблем. Если же я меняю тип это ключевого поля на Числовой, то программа ни в какую не хочет записывать вот это значение

Код: Выделить всё
cRow("КодРаздела") = DataSet11.Tables("Разделы").Rows.Count + 1


в поле таблицы базы данных, а ставит ему 0 и больше не дает добавлять строки, выдавая ошибку :(
Последний раз редактировалось Loiste 24.10.2005 (Пн) 11:30, всего редактировалось 1 раз.

baha76
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 07.01.2004 (Ср) 10:59
Откуда: Ташкент

Сообщение baha76 » 24.10.2005 (Пн) 9:53

Советую использовать объект CurrencyManager, так легче управлять. Привязать ее с твоим DataSet11 и воспользоваться методом AddNew объекта CurrencyManager и обновить базу методом Update объекта DataAdapter.

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 24.10.2005 (Пн) 12:37

Странно, вроде делаешь все по МСДН.
Попробуй добавлять через

ds.Tables("table").Rows.Add(new object(){..., ..., ..., ...})

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 24.10.2005 (Пн) 13:21

Та же история..выдает ошибку

An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll

на строке

Код: Выделить всё
OleDbDataAdapter3.Update(DataSet11)


В поле НазваниеРаздела значение заносит, а КодРаздела записывает как 0 :shock:

Я бы сменила тип этого поля на Счетчик, но в таком случае при удалении строк из таблицы счетчик не обновляется и получается путаница..

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 24.10.2005 (Пн) 14:19

Loiste писал(а):Я бы сменила тип этого поля на Счетчик, но в таком случае при удалении строк из таблицы счетчик не обновляется и получается путаница..


Счетчик и не должен обновляться, ибо путаница возникнет. ИМХО лучше счетчик.
Если ты все данные из таблицы удаляешь, то используй "TRUNCATE TABLE..."

Но советую до конца разобраться.

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 24.10.2005 (Пн) 15:03

Dmitriy Solomnikov писал(а):Если ты все данные из таблицы удаляешь, то используй "TRUNCATE TABLE..."


Нет, не все. В процессе работы программы записи в таблице могут удаляться, редактироваться, добавляться. Получается такая ситуация. Я добавляю несколько строк. Затем мне понадобилось удалить какие-то строки и в поле КодРаздела получается разрыв, например 9,10,11 и сразу 18,19...или это можно как-то исправить? Чтобы счетчик обновился.

Подскажите, пожалуйста!! Может все дело в том, что поле КодРаздела ключевое?! В базе данных имеет тип integer и в dataset также тип integer.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.10.2005 (Пн) 15:49

Не надо менять счётчик. Никогда.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Dmitriy Solomnikov
Постоялец
Постоялец
 
Сообщения: 407
Зарегистрирован: 10.11.2004 (Ср) 13:04
Откуда: Москва

Сообщение Dmitriy Solomnikov » 24.10.2005 (Пн) 16:00

Loiste писал(а): Затем мне понадобилось удалить какие-то строки и в поле КодРаздела получается разрыв, например 9,10,11 и сразу 18,19...или это можно как-то исправить? Чтобы счетчик обновился.


Это в порядке вещей. Меня это, например, не смущает и тебя не должно.

Проблема у тебя другая была...

Loiste
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 136
Зарегистрирован: 28.09.2005 (Ср) 11:59

Сообщение Loiste » 24.10.2005 (Пн) 16:15

ОК, ребят. Уговорили, оставлю счетчик :)


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 43

    TopList