如何显示消息,如果没有记录,发现

问题描述:

这是我的代码过滤数据转换成文本框/标签如何显示消息,如果没有记录,发现

Dim reader As MySqlDataReader 
    Try 
     If conn.State = ConnectionState.Closed Then 
      conn.Open() 
     End If 

     Dim query As String 
     query = "SELECT * FROM member WHERE (memor = '" & memor.Text & "')" 

     sqlcom = New MySqlCommand(query, conn) 
     reader = sqlcom.ExecuteReader 
     While reader.Read() 
      Me.lblname.Text = reader("membname").ToString 
      Me.txtmembtype.Text = reader("membtype").ToString 
      Me.lblmembdate.Text = reader("membdate").ToString 
     End While 

     conn.Close() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    Finally 
     conn.Dispose() 
    End Try 

现在我想有提示,有没有在我的MySQL数据库中找到数据的消息框?任何想法?

+3

'如果reader.HasRows().../ELSE MSGBOX /结束If' – Plutonix

+1

你应该看看'Using'块 - 你的连接,命令对象和读者都应该[当你完成它们时处置](http://stackoverflow.com/a/29187199/1070452)。 – Plutonix

您可以简单地使用reader.HasRows()检查记录

reader = sqlcom.ExecuteReader 
if Reader.HasRows() Then 
    While reader.Read() 
     Me.lblname.Text = reader("membname").ToString 
     Me.txtmembtype.Text = reader("membtype").ToString 
     Me.lblmembdate.Text = reader("membdate").ToString 
    End While 
Else 
    MessageBox.Show("No records found") 
End If 

殴打,但仍发布了强制性SQL parameterization警告。

修改后的代码:

Try 
    If conn.State = ConnectionState.Closed Then 
     conn.Open() 
    End If 


    Dim query As String 
    query = "SELECT * FROM member WHERE (memor = @memor)" 

    sqlcom = New MySqlCommand(query, conn) 
    sqlcom.Parameters.AddWithValue("@memor", memor.Text) 
    reader = sqlcom.ExecuteReader 
    If reader.HasRows Then 
     While reader.Read() 
      Me.lblname.Text = reader("membname").ToString 
      Me.txtmembtype.Text = reader("membtype").ToString 
      Me.lblmembdate.Text = reader("membdate").ToString 
     End While 
    Else 
     MsgBox("No data found.") 
    End If 

    conn.Close() 
Catch ex As Exception 
    MessageBox.Show(ex.Message) 
Finally 
    conn.Dispose() 

End Try