Очень неразумно объединять строки для выполнения на Sql Сервере. Помимо того, что трудно получить все одинарные кавычки и такие правильные, это может повредить вашу базу данных путем Sql внедрения. Всегда используйте параметры. Мне пришлось угадать тип данных и размер параметра в методе .Add. Проверьте правильность значений в вашей базе данных.
Я только что передал значение параметра в функцию. Для функций требуется тип возврата. Поскольку я не знал, что вы подразумевали под «вектором», я использовал DataTable.
Сохраняйте объекты базы данных локально по отношению к методу, в котором они используются, чтобы вы могли быть уверены, что они закрыты и удалены. Использование ... Конец Использование блоков делает это для вас, даже если есть и ошибка.
Public Class DataAccess
Private Shared conStr As String = "Your connection string"
Public Shared Function GetClientByPhone(phone As String) As DataTable
Dim dt As New DataTable
Using cn As New SqlConnection(conStr),
cmd As New SqlCommand("Select idcliente, Name, Lastname from Clients where Celphone = @Phone", cn)
cmd.Parameters.Add("@Phone", SqlDbType.VarChar, 50).Value = phone
cn.Open()
dt.Load(cmd.ExecuteReader)
End Using
Return dt
End Function
End Class
В форме ...
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt As DataTable
Try
dt = DataAccess.GetClientByPhone(TextBox1.Text)
Catch ex As Exception
MessageBox.Show(ex.Message)
Exit Sub
End Try
TextBox2.Text = dt(0)(0).ToString
TextBox3.Text = dt(0)(1).ToString
TextBox4.Text = dt(0)(2).ToString
End Sub
Я переместил Try ... End Попробуйте ввести код формы, чтобы при появлении ошибки пользователю отображалось окно сообщения. Не пишите пустой улов. Ваш код поглотит ошибки.