Вместо того, чтобы отфильтровывать «недействительные» данные из пользовательского ввода, рассмотрите возможность использования параметризованных запросов и не помещайте пользовательский ввод непосредственно в ваши запросы; это очень плохая форма.
Чтобы выполнить текущий запрос с использованием параметров, это довольно просто:
Dim con As New SqlConnection()
Dim cmd As New SqlCommand()
Try
con.ConnectionString = "Data Source=" & Server & ";Initial Catalog=" & Database & ";User ID=" & User & ";Password=" & Password & ";"
con.Open()
cmd.Connection = con
cmd.CommandText = "INSERT INTO TB_User(STRUserID, password, Email) VALUES(@username, @password, @email)"
cmd.Parameters.Add("@username", SqlDbType.VarChar, 50).Value = UsernameTextBox.Text
cmd.Parameters.Add("@password", SqlDbType.Char, 32).Value = MD5Hash(PasswordTextBox.Text)
cmd.Parameters.Add("@email", SqlDbType.VarChar, 50).Value = EmailTextBox.Text
cmd.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Error while inserting record on table..." & ex.Message, "Insert Records")
Finally
con.Close()
End Try
Все, что вам нужно сделать, это использовать cmd.Parameters.Add
с именем параметра и правильным типом базы данных (те, которые я угадал, вероятно, не совпадают, поэтому вы захотите изменить их), затем установите значение на значение, которое вы хотите использовать в запросе. Имена параметров начинаются с @
.