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

📄 processor.vb

📁 XML集成订单处理系统源代码.rar 注意:使用源代码时
💻 VB
字号:
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
Imports System.Xml.Serialization
'Imports System.Data.SqlClient
Imports System.Web
Imports System.Web.Mail
Imports System.Data
'引入数据库操作类命名空间
Imports System.Data.OleDb
'引入ADO.NET操作命名空间
Public Class Process

    '类成员
    Public Const WatchFolder As String = "C:\Order" ' 监控的文件夹
    '  Public Shared DbString As String = "Initial Catalog=NorthwindSQL;Data Source=NET-MONKEY\NetSDK;User ID=sa"
    Private watcher As FileSystemWatcher '定义watcher类

    Public Sub Start()
        watcher = New FileSystemWatcher(WatchFolder) '实例化监控类
        AddHandler watcher.Created, AddressOf Me.ProcessOrder
        watcher.Filter = "*.xml" '开始监控
        watcher.EnableRaisingEvents = True
        Log("监控 '" & WatchFolder & "'") '通知用户
        SavetoDatabase()
    End Sub

    Public Sub Shutdown()
        '停止监控
        If Not watcher Is Nothing Then
            watcher.EnableRaisingEvents = False '
            watcher = Nothing
            Log("后台监控程序关闭")
        End If

    End Sub

    Public Sub Log(ByVal buf As String)
        Console.WriteLine(Date.Now.ToLongTimeString & ": " & buf) '监控日志
    End Sub

    Public Sub ProcessOrder(ByVal sender As Object, _
        ByVal e As FileSystemEventArgs)
        '订单处理
        Log("处理订单 '" & e.FullPath & "'...") '通知用户   
        SendEmail()

        Log("完成处理 '" & e.FullPath & "'...") '通知用户
    End Sub
    Public Function GetEmailAddress(ByVal filename As String) As String
        Dim reader As New XmlTextReader(filename) '打开订单文件
        reader.MoveToContent() '定位到文档的开头
        Do While reader.Read '搜索整个文档
            Select Case reader.NodeType '节点类型
                Case XmlNodeType.Element '一个元素的开始6
                    If reader.Name <> "Email" Then '
                        Exit Select
                    End If
                Case XmlNodeType.Text '元素的文本内容
                    Return reader.Value '返回Email地址
            End Select
        Loop
    End Function
    Public Function SendEmail()
        Dim EmailAddress As String = Me.GetEmailAddress("c:\Order\Order.xml")
        '获得Email地址
        Try
            SmtpMail.Send("server@ChinaDrag.com", EmailAddress, "你的订单已经收到", "订单已经收到")
            '发送邮件
            Log("回复客户订单到:  '" & EmailAddress & "'")
            '写日志信息
        Catch ex As Exception
            ReportException(ex) '错误处理
        End Try
    End Function
    Public Sub ReportException(ByVal ex As Exception)
        Do While Not ex.InnerException Is Nothing
            ex = ex.InnerException
        Loop
        Log("An exception occured: " & ex.Message) '报告错误
        Console.WriteLine(ex.Source)
        Console.WriteLine(ex.StackTrace)
    End Sub
    Public Sub SavetoDatabase()
        Dim order As Order = _
                 Process.ReadOrder("C:\Order\Order.xml", GetType(Order))
        Dim ADOcmd As OleDbDataAdapter
        '建立ADODataSetCommand对象
        Dim ds As DataSet = New DataSet()
        '建立DataSet对象 
        Dim mytable As Data.DataTable
        '建立表单对象
        Dim myrow As Data.DataRow
        '建立数据行对象
        Dim rownumber As Integer
        '定义一个整型变量来存放当前行数
        Dim SearchSQL As String
        Dim cmd As OleDbCommandBuilder
        SearchSQL = "SELECT * FROM tbOrder"
        '构造查询
        ADOcmd = New OleDbDataAdapter(SearchSQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Order\Order.mdb")
        '建立ADODataSetCommand对象
        ADOcmd.Fill(ds, "tbOrder") '取得表单
        mytable = ds.Tables.Item(0) '取得名为table的表
        'rownumber = 0 '设置为第一行
        'myrow = mytable.Rows.Item(rownumber)
        '取得第一行数据
        Dim newrow As DataRow
        newrow = mytable.NewRow
        newrow.Item(0) = Order.CustomerNo  '给第一个字段赋值
        newrow.Item(1) = Order.CompanyName  '给第二个字段赋值
        newrow.Item(2) = Order.ShippingMethod
        newrow.Item(3) = Order.Quantity
        newrow.Item(4) = Order.City
        newrow.Item(5) = Order.PostalCode
        newrow.Item(6) = Order.Country
        newrow.Item(7) = Order.Email
        mytable.Rows.Add(newrow) '添加新用户
        cmd = New OleDbCommandBuilder(ADOcmd)
        '使用自动生成的SQL语句
        ADOcmd.Update(ds, "tbOrder")
        '对数据库进行更新
        Log("已经完成将客户订单保存到数据库")
    End Sub
    Public Shared Function ReadOrder(ByVal filename As String, _
                        ByVal newType As Type) As Object
        Dim fileInfo As New FileInfo(filename)
        If fileInfo.Exists = False Then
            '判断文件是否存在
            Return System.Activator.CreateInstance(newType) '建立一个对象
        End If
        Dim stream As New FileStream(filename, FileMode.Open) '打开文件
        Dim newObject As Object = ReadOrder(stream, newType) '从流中加载对象
        stream.Close() '关闭流
        Return newObject '返回对象
    End Function


    Public Shared Function ReadOrder(ByVal stream As Stream, _
                     ByVal newType As Type) As Object
        Dim serializer As New XmlSerializer(newType) '建立XmlSerializer对象
        Dim newObject As Object = serializer.Deserialize(stream)
        Return newObject
    End Function

End Class

⌨️ 快捷键说明

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