Проблема при получении данных: System.IndexOutOfRangeException: в позиции 0 нет строки - PullRequest
0 голосов
/ 31 октября 2019
Dim command As New SqlCommand("SELECT * From tblUserInfo WHERE Username='" & Trim(frmdashboard.ToolStripLabel4.Text) & "'", con)     

Dim table As New DataTable()
Dim sqlAdapter As New SqlDataAdapter(command)

sqlAdapter.Fill(table)

Me.UserTypeTextBox.Text = table.Rows(0)(10).ToString()
Me.UsernameTextBox.Text = table.Rows(0)(9).ToString()
Me.Email_AddressTextBox.Text = table.Rows(0)(12).ToString()
Me.PositionTextBox.Text = table.Rows(0)(1).ToString()

Me.NameTextBox.Text = table.Rows(0)(2).ToString()
Me.AddressTextBox.Text = table.Rows(0)(3).ToString()
Me.Date_of_BirthDateTimePicker.Value = table.Rows(0)(4).ToString()
Me.AgeTextBox.Text = table.Rows(0)(5).ToString()
Me.SexComboBox.Text = table.Rows(0)(6).ToString()
Me.Telephone_NumberTextBox.Text = table.Rows(0)(7).ToString()
Me.Mobile_NumberTextBox.Text = table.Rows(0)(8).ToString()

Me.Security_Question_1TextBox.Text = table.Rows(0)(13).ToString()
Me.Security_Question_2TextBox.Text = table.Rows(0)(15).ToString()

Dim img() As Byte

img = table.Rows(0)(17)

Dim ms As New MemoryStream(img)

Me.PicturePictureBox.Image = Image.FromStream(ms)

Это должно получить данные конкретного человека. Я получаю ошибку:

System.IndexOutOfRangeException: в позиции 0

нет строки

1 Ответ

1 голос
/ 31 октября 2019

Вы предполагаете, что ваш запрос вернет хотя бы одну запись, которая может / не может быть истинной все время. Сначала вы должны проверить, есть ли в ваших таблицах хотя бы одна строка, как показано ниже:

if ( table.Rows != null && tables.Rows.Count > 0)
{

    Dim img() As Byte;

    img = table.Rows(0)(17)

    Dim ms As New MemoryStream(img)

    Me.PicturePictureBox.Image = Image.FromStream(ms)
}
...