首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

代码重构解决思路

2012-01-09 
代码重构VB.NET codePrivate Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventAr

代码重构

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 

热点排行