Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как получить id только что созданного объекта? есть ms sql, dataset, dataadapter 
V
    Опции темы
mrSomeoneelse
Дата 9.8.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


neZavisimii



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Есть связка ms sql, dataAdapter, dataSet и dataGridView. Нужно создать 2 записи в 2х разных таблицах, причем при создании записи во второй таблице мы вписываем id свежесозданного объекта в первой таблице.

для dataAdapter определены функции DeleteCommand, InsertCommand, UpdateCommand. При изменении данных в dataset все без проблемм пишется в базу. Для каждой  таблицы есть свой датасет и датаадаптер.

Как узнать id из простой sql комманды я знаю, а как это сделать через dataAdapter?

код определенных команд

            string selectCommand = "SELECT id, name FROM testTable";
            dataAdapter = new SqlDataAdapter(selectCommand, sqlConn);
            dataSet = new DataSet();
            dataAdapter.Fill(dataSet, "testTable");

            string sqlUpd = "UPDATE testTable SET name = @name_new  WHERE id = @id_old";
            SqlCommand cmdUpd = new SqlCommand(sqlUpd, sqlConn);
            dataAdapter.UpdateCommand = cmdUpd;
            dataAdapter.UpdateCommand.Parameters.Add("@name_new", SqlDbType.VarChar, 0, "name");
            dataAdapter.UpdateCommand.Parameters.Add("@id_old", SqlDbType.SmallInt, 0, "id");

            string sqlIns = "INSERT INTO testTable (name) VALUES(@name_new)";
            SqlCommand cmdIns = new SqlCommand(sqlIns, sqlConn);
            dataAdapter.InsertCommand = cmdIns;
            dataAdapter.InsertCommand.Parameters.Add("@name_new", SqlDbType.VarChar, 0, "name");

            string sqlDel = "DELETE FROM testTable WHERE id = @id_old";
            SqlCommand cmdDel = new SqlCommand(sqlDel, sqlConn);
            dataAdapter.DeleteCommand = cmdDel;
            dataAdapter.DeleteCommand.Parameters.Add("@id_old", SqlDbType.SmallInt, 0, "id");

PM MAIL   Вверх
ДобренькийПапаша
Дата 10.8.2009, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Системная переменная @@IDENTITY содержит последнее идентификационное значение, созданное в текущем соединении.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
mrSomeoneelse
Дата 11.8.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


neZavisimii



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Благодарствую! Именно этого и не хватало! smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.