louis vuitton bag moncler jacka ugg boots mbt sko louis vuitton oslo moncler ugg www.steklo1.ru
   Поиск
 

ADO.NET

Работа с базами данных в приложениях .NET

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100

Получение идентификатора новой строки от базы данных SQL Server

Бывают ситуации, в которых создание идентификатора новой строки в таблице
возлагается на базу данных. С этой целью база данных SQL Server поддерживает поле
IDENTITY и серверную переменную @@IDENTITY, хранящую значение последнего созданного идентификатора. Для того чтобы воспользоваться этой функциональностью
в ADO,NET, необходимо выполнить следующие действия



// Создание объекта DataAdapter.
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM PRODUCT", conn);
// Создание команды INSERT,
string insQry = "INSERT INTO PRODUCT(Description, Vendor, Cost, Price) VALUES ( @Description, @Vendor, @Cost, @Price) ";

insQry += "SELECT @ProductID = @@IDENTITY";
SqlCoimand insCmd = conn. CreateCoirenand () ;
insCmd.CommandText = insQry;
// Определение переменной для упрощения
// доступа к коллекции параметров.
SqlParameterCollection insParams = insCmd.Parameters;
// Определение параметров.
insParams.Add("@ProductID" , SqlDbType.Int, 0, "ProductlD") ;
insParams["@ProductlD"].Direction = PararameterDirection.Output;
insParams.Add("@Description", SqlDbType.NVarChar, 255, "Description");
insParams.Add("@Vendor", SqlDbType.NVarChar, 255, "Vendor");
insParams-Add("@Cost", SqlDbType.Money, 0, "Cost");
insParams.Add("@Price", SqlDbType.Money, 0, "Price");
// Установка значения свойства InsertCommand
// объекта DataAdapter.
dataAdapter.InsertCommand = insCmd;
// Создание объекта DataSet.
DataSet dataSet = new DataSet();
DataRow delRow = custTable.Rows[1];
delRow.Delete();
// Создание объектов ConmandBuilder для генерирования
// команд вставки, изменения и удаления данных.
SqlCommandBuilder custBldr = new SqlCommandBuilder(custDA);
SqlCommandBuilder invBldr = new SqlCommandBuilder(invDA);
// Обновление базы данных.
SqlTransaction tx = null;
try
(
  // Для того чтобы начать транзакцию необходимо, открыть соединение.
  conn.Open {) /'
  // Создали* транзакции для команды SELECT.
  // Объект CommandBuilder распространит
  // транаакцию на остальное команд».
  tx = conn.BeginTransaction(IeolationLevel.Serializablw);
  invDA, SelectConunand. Traneaction = tx;
  cuatDA.SeleatCoromand,Transaction = tx;
  // Удаление информации из базы данных.
  //  Используем обратный порядок - сначала
  // обновляется дочерняя таблица.
  invDA.Update(invTable.GetChanges(DataRowState.Deleted));
  custDA.Update(custTable.GetChanges(DataRowState.Deleted));
  // Добавление и изменение информации в базе данных.
  // Используем прямой порядок - сначала
  // обновляется родительская таблица.
  custDA.Update(oustTable,GetChanges(DataRowState.Added, DataRowState.Modified));
  invDA.Update{invTable.GetChanges{DataRowState.Added,  DataRowState,Modified)};
  // На данном этапе транзакция можно зафиксировать,
  tx.Commit() ;
}
catch (SqlException ex)
{
  Console.WriteLine("Sql Error: {0}", ex.Message);
  // Отменить транзакцию при возникновении ошибки,
  if (tx != null) tx.Rollback();
}
finally
{
  if (conn.State != ConnectionState.Closed)
  {
    conn.Close ();
  }
}


Предыдущая стр.    Оглавление    Следующая стр.
Средняя оценка: (0 - 0 голосов)
Для оценки необходимо зарегистрироваться


Только зарегистрировавшиеся пользователи могут оставлять комментарии



Практический обучающий видео-курс "Основы C#"

От профессионального
разработчика для начинающих
и опытных программистов!

Кликните, чтобы изучить
язык C# с нуля и научиться
писать программы под платформу .NET!