wsorders11.vb

来自「wrox出版社的另一套经典的VB2005数据库编程学习书籍,收集了书中源码,郑重」· VB 代码 · 共 85 行

VB
85
字号
Imports Microsoft.VisualBasic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Services
Imports System.Web.Services.Protocols

'*************************************
'Version 1.1 Additions
'Support for object parameters in
'update and insert operations
'*************************************

Partial Public Class WSOrdersBE
	'Methods that require object parameters (Version 1.1)
	Private Const strUpdateOrderObject As String = "Version 1.1: Updates an Order object and the Orders record; returns 1 if successful. Accepts an Order object as the parameter."
	Private Const strInsertOrderObject As String = "Version 1.1: Creates an Order object and a default OrderDetail object and inserts a new Orders and Order Details records; returns new OrderID if successful.  Accepts an Order object as the parameter."
	Private Const strInsertDetailObjects As String = "Version 1.1: Creates OrderDetail objects and inserts new Order Details records; returns the number of OrderDetail objects inserted, if successful. Accepts an array of OrderDetail objects as the parameter, and deletes all existing OrderDetail objects before inserting."
	Private Const strInsertOrderAndDetailsObjects As String = "Version 1.1: Creates an OrderObject and multiple OrderDetails objects, and inserts all records. Accepts an Order object as the parameter, and returns the new OrderID if successful."
	Private Const strUpdateOrderAndDetailsObjects As String = "Version 1.1: Updates an OrderObject and its OrderDetails objects. Accepts an OrderDetails object as the parameter, and deletes all existing OrderDetail objects before inserting."

	<WebMethod(Description:=strUpdateOrderObject)> _
	Public Function UpdateOrderObject(ByVal objOrder As Order) As Integer
		Return ExecuteUpdateOrder(objOrder)
	End Function

	<WebMethod(Description:=strUpdateOrderAndDetailsObjects)> _
	Public Function UpdateOrderAndDetailsObjects(ByVal objOrder As Order, ByVal objDetails As OrderDetail()) As Integer
		'Updates order and details items in a single operation
		Dim intRecords As Integer
		intRecords = UpdateOrderObject(objOrder)
		intRecords += InsertDetailObjects(objDetails)
		Return intRecords
	End Function

	<WebMethod(Description:=strInsertOrderObject)> _
	Public Function InsertOrderObject(ByVal objOrder As Order) As Integer
		Return ExecuteInsertOrder(objOrder)
	End Function

	<WebMethod(Description:=strInsertOrderAndDetailsObjects)> _
 Public Function InsertOrderAndDetailsObjects(ByVal objOrder As Order, ByVal objDetails As OrderDetail()) As Integer
		'Insert order and details items in a single operation
		Dim intRecords As Integer
		intRecords = InsertOrderObject(objOrder)
		intRecords += InsertDetailObjects(objDetails)
	End Function

	<WebMethod(Description:=strInsertDetailObjects)> _
	Public Function InsertDetailObjects(ByVal objDetails As OrderDetail()) As Integer
		Dim intCount As Integer
		If objDetails.Length > 0 Then
			'Only delete objects with the initial OrderID value (for safety)
			Dim strOrderID As String = objDetails(0).OrderID.ToString
			Dim strSQL As String = "DELETE FROM [Order Details] WHERE OrderID = " + strOrderID
            Dim strConn As String = ConfigurationManager.ConnectionStrings("NorthwindConnection").ConnectionString
			Dim cnNwind As New SqlConnection(strConn)
			Dim cmOrder As New SqlCommand
			Try
				cmOrder.Connection = cnNwind
				cmOrder.CommandText = strSQL
				cnNwind.Open()
				cmOrder.ExecuteNonQuery()
				'Insert the Details objects
				Dim intRow As Integer
				For intRow = 0 To objDetails.Length - 1
					intCount += ExecuteInsertDetail(objDetails(intRow))
				Next
				Return intCount
			Catch excSql As SqlException
				Dim excSoap As New SoapException("SQLException: " + excSql.Message, SoapException.ClientFaultCode, _
				 Context.Request.Url.AbsoluteUri)
				Throw excSoap
			Catch excSys As System.Exception
				Dim excSoap As New SoapException("SystemException: " + excSys.Message, SoapException.ClientFaultCode, _
				 Context.Request.Url.AbsoluteUri)
				Throw excSoap
			Finally
				cnNwind.Close()
				cmOrder.Dispose()
				cnNwind.Dispose()
			End Try
		End If
	End Function
End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?