Good day everyone! I would like to ask for help regarding my code here. The main concern is to search from the MySQL database the keyword provided by a textbox. Here's my GUI for reference.
When I type my search key on the text box and the selected a column on the combo box, the search query will have its output on the listview. I've tried numerous combinations to gain an output, but to no avail.
Here's my code for you to help me.
Private Sub Search()
lviClientList.Items.Clear()
Dim strSqlSearch As String = "SELECT code, Company, StAdd, City, ContactPerson, Phone, Mobile, Email, Remarks FROM tblclients WHERE '@Column' LIKE '%" & txtSearchCriteria.Text & "%'"
Dim item As New ListViewItem()
If cboColumns.SelectedIndex = 0 Then
column = "code"
ElseIf cboColumns.SelectedIndex = 1 Then
column = "Company"
ElseIf cboColumns.SelectedIndex = 2 Then
column = "StAdd"
ElseIf cboColumns.SelectedIndex = 3 Then
column = "City"
ElseIf cboColumns.SelectedIndex = 4 Then
column = "ContactPerson"
ElseIf cboColumns.SelectedIndex = 5 Then
column = "Phone"
ElseIf cboColumns.SelectedIndex = 6 Then
column = "Mobile"
ElseIf cboColumns.SelectedIndex = 7 Then
column = "Email"
ElseIf cboColumns.SelectedIndex = 8 Then
column = "Remarks"
End If
Dim mysqlCommand As New MySqlCommand(strSqlSearch, mysqlConnection)
mysqlCommand.Parameters.AddWithValue("@Column", column)
Try
mysqlConnection.Open()
mysqlReader = mysqlCommand.ExecuteReader()
Do While mysqlReader.Read()
item = lviClientList.Items.Add(mysqlReader("code").ToString)
item.SubItems.Add(mysqlReader("Company").ToString)
item.SubItems.Add(mysqlReader("StAdd").ToString)
item.SubItems.Add(mysqlReader("City").ToString)
item.SubItems.Add(mysqlReader("ContactPerson").ToString)
item.SubItems.Add(mysqlReader("Phone").ToString)
item.SubItems.Add(mysqlReader("Mobile").ToString)
item.SubItems.Add(mysqlReader("Email").ToString)
item.SubItems.Add(mysqlReader("Remarks").ToString)
Loop
Catch ex As Exception
MsgBox("No results found.", MsgBoxStyle.OkOnly, "Project Analysis System")
Finally
mysqlReader.Close()
mysqlConnection.Close()
End Try
End Sub
It is not clear why your code doesn't work well. Try to change the code in your Catch
clause
MsgBox("No results found.", MsgBoxStyle.OkOnly, "Project Analysis System")
into
Msgbox(ex.Message.ToString(), MsgBoxStyle.OkOnly, "Project Analysis System")
so you will know what the exact error is.
You can concatenate the value for the ColumnName
since it is statically set in your code. But the value on WHERE
should be parameterized as it is the one entered by the user.
Try this modified Code,
Private Sub Search()
lviClientList.Items.Clear()
Dim item As New ListViewItem()
Dim _isFound As Boolean = False
Dim colName() As String = {"code", "Company", "StAdd", "City", "ContactPerson", "Phone", "Mobile", "Email", "Remarks"}
Dim strSqlSearch As String = "SELECT code, Company, StAdd, City, " & _
"ContactPerson, Phone, Mobile, Email, Remarks " & _
"FROM tblclients " & _
"WHERE " & colName(cboColumns.SelectedIndex) & " LIKE CONCAT('%', @valueName, '%')"
Using myConn As New MySqlConnection("connectionStringHere")
Using myComm As New MySqlCommand()
With myComm
.Connection = myConn
.CommandType = CommandType.Text
.CommandText = strSqlSearch
.Parameters.AddWithValue("@valueName", txtSearchCriteria.Text);
End With
Try
myConn.Open()
Dim myReader As MySqlDataReader = myComm.ExecuteReader()
While myReader.Read()
_isFound = True
item = lviClientList.Items.Add(myReader("code").ToString)
item.SubItems.Add(myReader("Company").ToString)
item.SubItems.Add(myReader("StAdd").ToString)
item.SubItems.Add(myReader("City").ToString)
item.SubItems.Add(myReader("ContactPerson").ToString)
item.SubItems.Add(myReader("Phone").ToString)
item.SubItems.Add(myReader("Mobile").ToString)
item.SubItems.Add(myReader("Email").ToString)
item.SubItems.Add(myReader("Remarks").ToString)
End While
If Not _isFound Then
MsgBox("No results found.", MsgBoxStyle.OkOnly, "Project Analysis System")
End If
Catch ex As MySqlException
Msgbox(ex.Message.ToString(), MsgBoxStyle.OkOnly, "Project Analysis System")
End Try
End Using
End Using
End Sub
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With