[c#, msvs2003] SqlDataAdapter

Alena_08_11

какая должна быть таблица, чтобы мастер смог сгенерировать UpdateCommand и DeleteCommand ?
У меня таблица
id itity,
_name varchar(30) unique,
descr varchar(30)
addinfo varchar(30)
При создании SqlDataAdapter запускается мастер который в итоге нормально генерирует SELECT и INSERT statements, а вот на UPDATE и DELETE statements ругается :

Could not determine which columns uniquely itify the rows for "table1".

ЧТо это значит ?

sasha79

Primary key есть у таблицы?

Alena_08_11

hz
Что это такое ?как его сделать ? его нада указывать при создании таблицы ?

evgen5555

его нада указывать при создании таблицы ?

Где хочешь, там и указывай.
Но присутствовать он должен.

Helga87


create table MyTable
(
id int itity primary key,
_name varchar(30) unique,
descr varchar(30
addinfo varchar(30)
)

И все OK - студия генерирует все команды

Alena_08_11

хмм
а сейчас в моём случае нельзя ли сделать id - primary key'ем (ну чтобы таблица осталась)

Helga87

Попробуй так:
открой свою базу данных в Enterprise Manager,
выбери на своей таблице Design Table,
откроется окошко со стобцами твоей таблицы,
выдели столбец Id и нажми на кнопку Set Primary Key на панели инструментов.
Все должно заработать

Alena_08_11

thx
попробую

Alena_08_11

Продолжение ....
Таблица та же:

create table MyTable
(
id int itity primary key,
_name varchar(30) unique,
descr varchar(30
addinfo varchar(30)
)

Студией Генерируется SqlDataAdapter sDA, затем заполняется DataSet sDS... sDA.FIll(sDS);
Далее: На форме есть 3 TextBox'а и кнопка INS, в событии нажатия пишу
DataRow DR = sDA....NewRow;
DR["_name"] = tb1.Text;
DR["descr'] = tb2.Text;
DR["addinfo"] = tb3.Text;
sDA.Tables["MyTable"].Rows.AddRow(DR);
Затем, как только я вызываю метод sDA.Update(sDS); то возможны варианты:
1. Добавленые таким образом записи в sDS нормально вносятся в БазуДанных, при этом поле id каким то образом правильно генерируется
2. Вызывается Exception какой то
Как сделать так, чтобы не было Exceptiona в связи с повторяющимися значениями поля id ?
Надо как то принципиально по другому вносить данные в DataSet ?
Или как реализовать такую штуку: в оффлайне все добавленные строки в DataSet хранятся с неопределённым id, затем когда вызывается sDA.Update(sDS); - сначала берётся значение последнего id в базе данных, все неопределённые id определяются в DataSet и только потом база данных синхронизируется с DataSet ?
Есть мб какие нить стандартные реализации такого ?
ps. Мб коряво всё описал - ну уж как умею

evgen5555

Как сделать так, чтобы не было Exceptiona в связи с повторяющимися значениями поля id ?

Следовать первому варианту.

xz_post

Попробуй в свойстве ID-шной колонки задать автоинкремент AutoIncrementSeed и AutoIncrementStep отрицательным. Вообще в МСДН как раз об это проблеме есть огромная статья - и предлагается несколько способов решения

Alena_08_11

Как эту статью найти ?
мне бы ссылочку типа msdn.microsoft.com/library/rus/.......
Оставить комментарий
Имя или ник:
Комментарий: