⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orders.vb

📁 编程之道VB.NETt程序设计入门-589M.zip
💻 VB
字号:
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes

Imports Nozama.General

Namespace Nozama.DataAccess

    Public Class Orders
        Implements IDisposable
 
        Private insertOrderComm As SqlCommand
        Private insertOrderDetailComm As SqlCommand

        Public Sub New()
            MyBase.New()
        End Sub

        Public Sub Dispose() Implements IDisposable.Dispose
            Dispose(True)
            GC.SuppressFinalize(True)
        End Sub

        Protected Overridable Sub Dispose(ByVal disposing As Boolean)
            If Not disposing Then
                Exit Sub
            End If

            If Not insertOrderComm Is Nothing Then
                If Not insertOrderComm.Connection Is Nothing Then
                    insertOrderComm.Connection.Dispose()
                End If
                insertOrderComm.Dispose()
                insertOrderComm = Nothing
            End If

            If Not insertOrderDetailComm Is Nothing Then
                If Not insertOrderDetailComm.Connection Is Nothing Then
                    insertOrderDetailComm.Connection.Dispose()
                End If
                insertOrderDetailComm.Dispose()
                insertOrderDetailComm = Nothing
            End If
        End Sub

        Private Function BuildInsertCommand() As SqlCommand
            If insertOrderComm Is Nothing Then
                Dim conn As New SqlConnection(Settings.ConnectionString)
                conn.Open()
                insertOrderComm = New SqlCommand("InsertOrder", conn)
                insertOrderComm.CommandType = CommandType.StoredProcedure

                With insertOrderComm.Parameters
                    .Add(New SqlParameter("@UID", SqlDbType.Int)).Direction = ParameterDirection.Output
                    .Add(New SqlParameter("@OrderDate", SqlDbType.DateTime))
                    .Add(New SqlParameter("@CustomerName", SqlDbType.NVarChar))
                    .Add(New SqlParameter("@Address", SqlDbType.NVarChar))
                    .Add(New SqlParameter("@TotalPrice", SqlDbType.Money))
                    .Add(New SqlParameter("@CreditCardNumber", SqlDbType.NVarChar))
                End With
            End If

            Return insertOrderComm
        End Function

        Private Function BuildInsertDetailCommand() As SqlCommand
            If insertOrderDetailComm Is Nothing Then
                Dim conn As New SqlConnection(Settings.ConnectionString)
                conn.Open()
                insertOrderDetailComm = New SqlCommand("InsertOrderDetail", conn)
                insertOrderDetailComm.CommandType = CommandType.StoredProcedure

                With insertOrderDetailComm.Parameters
                    .Add(New SqlParameter("@OrderID", SqlDbType.Int))
                    .Add(New SqlParameter("@BookID", SqlDbType.Int))
                    .Add(New SqlParameter("@Price", SqlDbType.Money))
                    .Add(New SqlParameter("@Quantity", SqlDbType.Int))
                End With
            End If

            Return insertOrderDetailComm
        End Function

        Public Function InsertOrder(ByVal order As OrderData) As Int32
            Dim Command As SqlCommand = BuildInsertCommand()

            With order.Tables(OrderData.ORDERS_TABLE).Rows(0)

                Command.Parameters.Item("@OrderDate").Value = .Item(OrderData.ORDER_DATE)
                Command.Parameters.Item("@CustomerName").Value = .Item(OrderData.CUSTOMER_NAME)
                Command.Parameters.Item("@Address").Value = .Item(OrderData.ADDRESS)
                Command.Parameters.Item("@TotalPrice").Value = .Item(OrderData.TOTAL_PRICE)
                Command.Parameters.Item("@CreditCardNumber").Value = .Item(OrderData.CREDIT_CARD_NUMBER)
            End With
            Command.ExecuteNonQuery()
            Dim OrderID As Int32 = Command.Parameters.Item("@UID").Value

            Command = BuildInsertDetailCommand()
            Dim row As DataRow
            For Each row In order.Tables(OrderData.ORDER_BOOK_TABLE).Rows
                With row
                    Command.Parameters.Item("@OrderID").Value = OrderID
                    Command.Parameters.Item("@BookID").Value = .Item(OrderData.BOOK_ID)
                    Command.Parameters.Item("@Price").Value = .Item(OrderData.PRICE)
                    Command.Parameters.Item("@Quantity").Value = .Item(OrderData.QUANTITY)
                End With
                Command.ExecuteNonQuery()
            Next

        End Function
    End Class

End Namespace

⌨️ 快捷键说明

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