Как вытащить целочисленные значения из SQL База данных сервера в C# Combobox? - PullRequest
0 голосов
/ 23 января 2020

В приведенном ниже примере показано, что произойдет после выбора случайного элемента списка. Sql запрос успешно выполнен, однако я получаю сообщение об ошибке «указанное приведение неверно c#».

Combobox listaPrzedmiotow сохраняет список школьных предметов в строки. Combobox listaIndeksów должен хранить список индексов учащихся. В SQL База данных сервера индексы учеников столбец принимает целое число, поэтому я не знаю, почему метод .GetInt64 (i) для этого недопустим.

private void listaPrzedmiotow_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show(listaPrzedmiotow.SelectedItem.ToString());
            SqlCommand sqlCommand = new SqlCommand("select studenci.NUMER_INDEKSU from dbo.oceny inner join studenci on studenci.numer_indeksu = oceny.numer_indeksu inner join dbo.przedmioty on przedmioty.przedmiot_id = oceny.przedmiot_id where przedmioty.NAZWA_PRZEDMIOTU = '" + listaPrzedmiotow.SelectedItem.ToString() + "'", sqlConnection);
            SqlDataReader indexesList = sqlCommand.ExecuteReader();

            while (indexesList.Read())
            {
                for (byte i = 0; i < indexesList.FieldCount; i++)
                {
                    listaIndeksów.Items.Add(indexesList.GetInt64(i));
                }
            }
            indexesList.Close();
            indexesList.Dispose();
        }

1 Ответ

0 голосов
/ 23 января 2020

Вероятно, ошибка происходит, потому что вы передаете байт в indexesList.GetInt64 ().

Если вы посмотрите на документы https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldatareader.getint64?view=netframework-4.8, это покажет, что

Попробуйте изменить для l oop байт на int. Если это не сработает, вы можете попробовать Convert.ToInt32 () и значение, которое вы ловите на l oop

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...