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

Перейти на страницу:

Похожие книги