Как сделать функцию, которая читает все столбцы одной строки SQL Server и который выводит вектор - PullRequest
0 голосов
/ 12 апреля 2020

Привет, ребята. Я новичок в мире VB. net и SQL.

Я хотел бы запрограммировать функцию, вывод которой является вектором, который содержит значения столбцов выбранного row.

Я хочу создать функцию publi c, чьим вводом является запрос

Для этого конкретного примера мой запрос:

"Select idcliente, Name, Lastname, from Clients where Celphone = '" + txtcelphone.Text + "'"
Public Function RunQuery_read_row(Query As String)    
    Try        
        Dim SQLCmd As New SqlCommand(Query, SQLcon)

        return  'The return should be a vector whose size will be adapted according to the query"
    Catch ex As Exception        
    End Try

End Function

This Функция будет вызываться из формы, в которой есть несколько текстовых полей, в которые будут записаны результаты функции.

Спасибо за помощь

С уважением, FBello

1 Ответ

0 голосов
/ 12 апреля 2020

Очень неразумно объединять строки для выполнения на 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 Попробуйте ввести код формы, чтобы при появлении ошибки пользователю отображалось окно сообщения. Не пишите пустой улов. Ваш код поглотит ошибки.

...