专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

代码重构解决思路

发布时间:2011-06-23 16:02:41 文章来源:www.iduyao.cn 采编人员:星星草
代码重构
VB.NET code
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Timer2.Enabled = True

        Timer2.Interval = 1000
        '每一秒刷新一次
        '遍历取值问题解决,i=i+1去掉
        Try

      

        Dim str2 As String = "server=localhost;database=test;user id=root;password=123;pooling=false;"

        Dim conn1 As MySqlConnection = New MySqlConnection(str2)
        conn1.Open()

        '查詢資料
        Dim str1 As String = "select * from wait_message where ustatus = '-1'"
        Dim adapter1 As Common.DbDataAdapter = New MySqlDataAdapter(str1, conn1)

        '將查詢結果放到記憶體testDataSet上的"wait_message"表格內
        Dim testDataSet As DataSet = New DataSet
        adapter1.Fill(testDataSet, "wait_message")

        Dim i As Integer = 0

        '它是按照0,2,4循环的.如果把i=i+1去掉可以读取到全部,不过跟弹出框和刷新不同步,控件读取数据的时间跟发送时间不同步问题,现在的问题还是不太清楚发送的数据有没有问题

        For i = 0 To testDataSet.Tables("wait_message").Rows.Count - 1


            MobPort.Text = testDataSet.Tables("wait_message").Rows(i).Item("uportnum")
            TelNum_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("uphonenum")
            'DeleteSms_Index.Text = testDataSet.Tables("wait_message").Rows(i).Item("ucontent") '此行是主鍵值,所以不打算顯示
            SendSms_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("ucontent")
            ReceiveSms_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("uIndex")
            DeleteSms_Index.Text = testDataSet.Tables("wait_message").Rows(i).Item("ustatus")
            'MsgBox(testDataSet.Tables("wait_message").Rows.Count - 1)
                'MsgBox(MobPort.Text & testDataSet.Tables("wait_message").Rows(i).Item("uportnum"))
                ' MsgBox(i)
            Next


        Catch ex As Exception
            MsgBox(ex.Message)
        End Try




        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
        If Len(Trim(TelNum_Text.Text)) >= 11 And Sms_Send(Trim(TelNum_Text.Text), Trim(SendSms_Text.Text)) Then
            Sms_Disconnection_Button.Enabled = False
            MsgBox("发送短信成功!", MsgBoxStyle.Information, "提示")
            'Else
            '    MsgBox("发送短信失败!", MsgBoxStyle.Critical, "警告")
            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

            Dim str2 As String = "server=localhost;database=test;user id=root;password=123;pooling=false;"

            Dim conn1 As MySqlConnection = New MySqlConnection(str2)

            conn1.Open()

            Dim comstr As String
            comstr = " UPDATE wait_message SET ustatus = '1' WHERE ustatus = '-1' "
            Dim adapter1 As Common.DbDataAdapter = New MySqlDataAdapter(comstr, conn1)
            Dim testDataSet As DataSet = New DataSet
            adapter1.Fill(testDataSet, "wait_message")





            ''關閉資料庫的連結
            conn1.Close()
            'conn1.ConnectionString = Nothing



        End If






        Timer2.Enabled = False




    End Sub

================
怎么把这两个dataSet和发送消息的代码分别重构为几个函数~

------解决方案--------------------
我这由于没有sqldata就没有办法测试了
如果调用不是很频繁conn1也不用定义成全局变量了.


那么你的代码就可以改成这样:
VB.NET code
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Timer2.Enabled = True

        Timer2.Interval = 1000
        '每一秒刷新一次
        '遍历取值问题解决,i=i+1去掉
        Try

            Dim str1$ = "select * from wait_message where ustatus = '-1'"
            Dim testDataSet As DataSet = setDataSet(str1, conn1)
            '查詢資料
            '將查詢結果放到記憶體testDataSet上的"wait_message"表格內

            '它是按照0,2,4循环的.如果把i=i+1去掉可以读取到全部,不过跟弹出框和刷新不同步,控件读取数据的时间跟发送时间不同步问题,现在的问题还是不太清楚发送的数据有没有问题

            For i As Int32 = 0 To testDataSet.Tables("wait_message").Rows.Count - 1

                MobPort.Text = testDataSet.Tables("wait_message").Rows(i).Item("uportnum")
                TelNum_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("uphonenum")
                'DeleteSms_Index.Text = testDataSet.Tables("wait_message").Rows(i).Item("ucontent") '此行是主鍵值,所以不打算顯示
                SendSms_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("ucontent")
                ReceiveSms_Text.Text = testDataSet.Tables("wait_message").Rows(i).Item("uIndex")
                DeleteSms_Index.Text = testDataSet.Tables("wait_message").Rows(i).Item("ustatus")
                'MsgBox(testDataSet.Tables("wait_message").Rows.Count - 1)
                'MsgBox(MobPort.Text & testDataSet.Tables("wait_message").Rows(i).Item("uportnum"))
                ' MsgBox(i)
            Next

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try


        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
        If Len(Trim(TelNum_Text.Text)) >= 11 And Sms_Send(Trim(TelNum_Text.Text), Trim(SendSms_Text.Text)) Then
            Sms_Disconnection_Button.Enabled = False
            MsgBox("发送短信成功!", MsgBoxStyle.Information, "提示")
            'Else
            ' MsgBox("发送短信失败!", MsgBoxStyle.Critical, "警告")
            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default


            Dim comstr = " UPDATE wait_message SET ustatus = '1' WHERE ustatus = '-1' "
            Dim testDataSet As DataSet = setDataSet(comstr, conn1)


        End If


        Timer2.Enabled = False


    End Sub

    Private Function setDataSet(ByVal conStr$) As DataSet

        Dim str2 As String = "server=localhost;database=test;user id=root;password=123;pooling=false;"
        Dim conn1 As MySqlConnection = New MySqlConnection(str2)
        conn1.Open()
        Dim adapter1 As Common.DbDataAdapter = New MySqlDataAdapter(conStr, conn1)
        Dim tmpDataSet As DataSet = New DataSet
        adapter1.Fill(tmpDataSet, "wait_message")
        Return tmpDataSet
        conn1.Close()
    End Function
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: