» » » Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET


Авторские права

Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET

Здесь можно скачать бесплатно "Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство Издательский дом "Вильямс", год 2003. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET
Рейтинг:
Название:
Обработка баз данных на Visual Basic®.NET
Издательство:
Издательский дом "Вильямс"
Год:
2003
ISBN:
5-8459-0512-5
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Обработка баз данных на Visual Basic®.NET"

Описание и краткое содержание "Обработка баз данных на Visual Basic®.NET" читать бесплатно онлайн.



Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000. Затем рассматриваются способы использования основных объектов модели ADO.NET для доступа к данным в реляционных базах данных. Благодаря подробным примерам, читатели могут изучить способы использования основных свойств и методов, а также узнать о более сложных компонентах и технологиях. Многочисленные листинги с кодом на языке Visual Basic .NET иллюстрируют используемые концепции, а бизнес-ситуации показывают практическую область их применения.






Явное указание команд обновления

В отличие от довольно простого способа генерации нужных команд обновления с помощью объекта CommandBuilder, явное указание команд обновления в коде представляет собой хотя и более гибкий, но весьма трудоемкий способ. При его использовании каждая из четырех команд управления данными (Select, Insert, Update и Delete) должна быть создана отдельно. Чаще всего они кодируются в виде хранимой процедуры для каждой команды SQL.

В листинге 6.4 представлен сценарий SQL Server для генерации четырех хранимых процедур. Хранимая процедура SelectEmployees просто выбирает все поля таблицы tblEmployee. Хранимая процедура InsertEmployee принимает четыре параметра, т.е. по одному для каждого обновляемого поля. Хранимая процедура UpdateEmployee принимает те же четыре параметра для обновляемых полей и еще один параметр для исходного значения идентификационного поля, которое используется в предложении WHERE для выбора обновляемой записи (на основании первичного ключа). Хранимая процедура DeleteEmployee принимает исходное значение идентификационного поля для удаления указанной записи.

Листинг 6.4. Сценарий SQL Server для создания хранимых процедур для таблицы tblEmployee

IF EXISTS (SELECT * FROM sysobjects WHERE name =

 'SelectEmployees' AND user__ name(uid) = 'dbo'

 DROP PROCEDURE [dbo].[SelectEmployees]

GO

CREATE PROCEDURE [dbo].[SelectEmployees]

AS

 SET NOCOUNT ON;

 SELECT FirstName, LastName, DepartmentID, Salary, ID FROM

 tblEmployee

GO

IF EXISTS (SELECT * FROM sysobjects WHERE name =

 'InsertEmployee' AND user_name(uid) = 'dbo'

 DROP PROCEDURE [dbo].[InsertEmployee]

GO

CREATE PROCEDURE [dbo].[InsertEmployee] (

 @FirstName varchar(50),

 @LastName varchar(70),

 @DepartmentID int,

 @Salary money

)

AS

 SET NOCOUNT ON;

 SELECT INTO tblEmployee(FirstName, LastName, DepartmentID, Salary)

 VALUES (@FirstName, @LastName, @DepartmentID, @Salary)

GO

IF EXISTS (SELECT * FROM sysobjects WHERE name =

 'UpdateEmployee' and user_name(uid) = 'dbo'

 DROP PROCEDURE [dbo].[UpdateEmployee]

GO

CREATE PROCEDURE [dbo].[UpdateEmployee] (

 @FirstName varchar(50),

 @LastName varchar(70),

 @DepartmentID int,

 @Salary money,

 @Original_ID int

)

AS

 SET NOCOUNT ON;

 UPDATE tblEmployee SET FirstName = @FirstName, LastName = @LastName,

  DepartmentID = @DepartmentID, Salary = @Salary

 WHERE (ID = @Original_ID)

GO

IF EXISTS (SELECT * FROM sysobjects WHERE name

 'DeleteEmployee' and user_name

 DROP PROCEDURE [dbo].[DeleteEmployee]

GO

create procedure [dbo].[DeleteEmployee] (@Original_ID int)

AS

 SET NOCOUNT ON;

 DELETE FROM tblEmployee

 WHERE (ID = @Original_ID)

GO

Вернемся к коду приложения. Во-первых, изменим первую строку кода в подпрограмме btnLoad_Click, т.е. вместо вызова подпрограммы LoadCommandBuilder вставим вызов подпрограммы LoadExplicitCode. Кроме того, для отладки явно заданного кода для команды обновления нужно добавить блок Try-Catch в подпрограмму btnUpdate_Click, которая теперь будет иметь приведенный ниже вид.

Private Sub btnUpdate_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles btnUpdate.Click

 Try

  daEmployees.Update(dsEmployeeInfo, "Employees")

 Catch es As SqlException

  MessageBox.Show(es.Message)

 End Try

End Sub

Наконец, код подпрограммы LoadExplicitCode будет выглядеть так, как показано в листинге 6.5.

Листинг 6.5. Подпрограмма LoadExplicitCode для четырех специализированных команд SQL для адаптера данных daEmployees

Private Sub LoadExplicitCode()

 Dim param As SqlParameter

 If conn.State = ConnectionState.Closed Then

  conn.Open()

 End If

 ' Создание нового объекта DataAdapter.

 daEmployees = New SqlDataAdapter()

 ' Создание специализированной

 ' хранимой процедуры для команды Select.

 daEmployees.SelectCommand = New SqlCommand()

 With daEmployees.SelectCommand

  .Connection = conn

  .CommandType = CommandType.StoredProcedure

  .CommandText = "SelectEmployees"

 End With

 ' Создание специализированной

 ' хранимой процедуры для команды Insert.

 daEmployees.InsertCommand = New SqlCommand()

 With daEmployees.InsertCommand

  .Connection = conn

  .CommandType = CommandType.StoredProcedure.CommandText = "InsertEmployee"

 End With

 param = daEmployees.InsertCommand.Parameters.Add(_

  New SqlParameter(@FirstName", SqlDbType.VarChar, 50))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "FirstName"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.InsertCommand.Parameters.Add( _

 New SqlParameter("@LastName", SqlDbType.VarChar, 70))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "LastName"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.InsertCommand.Parameters.Add(_

  New SqlParameter("@DepartmentID, SqlDbType.Int))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "DepartmentID"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.InsertCommand.Parameters.Add( _

  New SqlParameter("@Salary", SqlDbType.Money))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "Salary"

 param.SourceVersion = DataRowVersion.Current

 ' Создание специализированной

 ' хранимой процедуры для команды Update.

 daEmployees.UpdateCommand = New SqlCommand()

 With daEmployees.UpdateCommand

  .Connection = conn

  .CommandType = CommandType.StoredProcedure

  .CommandText = "UpdateEmployee"

 End With

 param = daEmployees.UpdateCommand.Parameters.Add( _

  New SqlParameter("@FirstName@, SqlDbType.VarChar, 50))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "FirstName"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.UpdateCommand.Parameters.Add( _

  New qlParameter("@LastName", SqlDbType.VarChar, 70))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "LastName"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.UpdateCommand.Parameters.Add( _

  New SqlParameter("@DepartmentID, SqlDbType.Int))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "DepartmentID"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.UpdateCommand.Parameters.Add( _

  New SqlParameter("@Salary, SqlDbType.Money))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "Salary"

 param.SourceVersion = DataRowVersion.Current

 param = daEmployees.UpdateCommand.Parameters.Add( _

  New SqlParameter("@Original_ID, SqlDbType.Int))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "ID"

 param.SourceVersion = DataRowVersion.Original

 ' Создание специализированной

 ' хранимой процедуры для команды Delete.

 daEmployees.DeleteCommand = New SqlCommand()

 With daEmployees.DeleteCommand

  .Connection = conn

  .CommandType = CommandType.StoredProcedure

  .CommandText = "DeleteEmployee"

 End With

 param = daEmployees.DeleteCommand.Parameters.Add(_

  New SqlParameter("@Original_ID", SqlDbType.Int))

 param.Direction = ParameterDirection.Input

 param.SourceColumn = "ID"

 param.SourceVersion = DataRowVersion.Original

End Sub

НА ЗАМЕТКУ

Код присвоения значений для каждого из объектов-параметров мог быть более компактным за счет вызова другой перегруженной версии метода Add. Эта альтернативная версия принимает значения для всех необходимых свойств-параметров в одном вызове метода с длинным списком параметров.

Невзирая на большой размер, код подпрограммы LoadExplicitCode имеет очень простую и понятную структуру, если определен интерфейс (параметры и типы) для хранимых процедур. Для всех свойств объекта Command создается новый экземпляр объекта SQLCommand. Ему присваивается общий объект Connection и задаются значения свойств CommandType и CommandText. Затем нужно создать и конфигурировать все параметры каждой команды.

Скомпонуем проект DataSetCode и снова проверим работоспособность полученного приложения. Оно будет работать как и прежде, но теперь в подпрограмме LoadExplicitCode используются специализированные команды для обновления базы данных. Этот подход требует больших усилий по созданию кода, но является более гибким, предлагает более высокую производительность и централизованное управление хранимыми процедурами.

Вставка бизнес-логики в команды обновления

Прежде уже описывалось, как хранимые процедуры для специализированных команд обновления можно использовать для вставки бизнес-логики в хранимые процедуры, которые вызываются автоматически. По сравнению с прежними версиями модели ADO и другими моделями доступа к данным новизна заключается не во вставке логики в хранимые процедуры, поскольку эта функциональная возможность существовала и раньше. Дело в том, что эти хранимые процедуры вызываются автоматически при выполнении "пакетных" обновлений вместо явной организации вызовов в коде программы.

Для демонстрации этого подхода попробуем изменить хранимую процедуру. Предположим, что бизнес-логика определяется следующим образом: если при вставке новой записи о сотруднике значение зарплаты в поле Salary не определено или равно 0, то для него автоматически задается значение, определяемое функцией отдела. Для реализации этой бизнес-логики применим очень простой механизм: автоматически присвоенное значение будет равно произведению номера отдела и значения 10000. (Конечно, в реальных условиях компания может использовать более удачный алгоритм для указания этого значения!) Измененная хранимая процедура теперь будет выглядеть так, как показано ниже.


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Обработка баз данных на Visual Basic®.NET"

Книги похожие на "Обработка баз данных на Visual Basic®.NET" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Джеффри Мак-Манус

Джеффри Мак-Манус - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET"

Отзывы читателей о книге "Обработка баз данных на Visual Basic®.NET", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.