- 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