Fiínek Cahů Ответов: 1

Создание диаграммы из базы данных SQL


У меня есть проблема с этой частью кода, покажите мне ошибку: convert string ID on type integer is not valid. В SQL есть тип int. В чем проблема, пожалуйста? Спасибо

Chart1.Series("GRAF_PORUCH").Points.AddXY(READER.GetInt32("ID"), READER.GetString("VIDENCNI_CIS"))


Что я уже пробовал:

Private Sub BUTTON1_Click(sender As Object, e As EventArgs) Handles BUTTON1.Click

       Dim DOTAZ As String = "SELECT * FROM TECH_PORUCHY"
       Dim READER As SqlDataReader
       Dim ds As New DataSet
       Try
           CONNECTION.Open()

           CMD6 = New SqlCommand(DOTAZ, CONNECTION)
           READER = CMD6.ExecuteReader
           While READER.Read

               Chart1.Series("GRAF_PORUCH").XValueMember = "EVIDENCNI_CIS"
               Chart1.Series("GRAF_PORUCH").YValueMembers = "ID"
               Chart1.Size = New System.Drawing.Size(780, 350)
               Chart1.Series("GRAF_PORUCH").Points.AddXY(READER.GetInt32("ID"), READER.GetString("VIDENCNI_CIS"))
           End While
           CONNECTION.Close()

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       Finally
           CONNECTION.Dispose()

       End Try
   End Sub

#realJSOP

Извините, я недавно поставил Windows 10 на свой хрустальный шар, и обновление 218 октября замуровало мой шар.

Herman<T>.Instance

новые шары, пожалуйста?

Herman<T>.Instance

Является ли тип smallint, int или bigint в SQL ?

[no name]

небольшое инт

1 Ответов

Рейтинг:
4

CHill60

Если вы проверите документацию - Класс sqldatareader.Метод GetInt32(Int32) (System.Data.SqlClient) | Microsoft Docs[^] - это покажет вам

Цитата:
public override int GetInt32 (int я);
Параметры
я Типа int32 Порядковый номер столбца на основе нуля.
Вы используете строку в своем коде
... AddXY(READER.GetInt32("ID"), ...
Обратите внимание, что у вас будет такая же проблема с GetString.

Вы также возвращаете все столбцы из своей таблицы с помощью
"SELECT * FROM TECH_PORUCHY"
Лучше всего явно перечислить столбцы, которые вы хотите вернуть, - это также делает код использующим GetInt32 и т. д. легче читать.например.
Dim DOTAZ As String = "SELECT ID, VIDENCNI_CIS FROM TECH_PORUCHY"
.
.
.
Chart1.Series("GRAF_PORUCH").Points.AddXY(READER.GetInt32(0), READER.GetString(1))


Richard Deeming

Хорошее место. :)

Кроме того, основываясь на комментариях к вопросу, столбец ID представляет собой smallint так и должно быть GetInt16(0), с:
"Никакие преобразования не выполняются; следовательно, полученные данные уже должны быть 32-битным целым числом со знаком."

CHill60

Тоже хорошее место!

[no name]

спасибо вам мужчины ;)