Nithish685 Ответов: 1

Я не могу увеличить свою таблицу, когда пытаюсь объявить их, которые вызывают ошибку


Dim noofhalls As Integer
       Dim n As Integer
       Dim m As Integer
       Dim k As Integer
       Dim h As Integer
       Dim count As Integer

       noofhalls = Val(TextBox1.Text) / 15 'value is total number of strength and the values is 15
       If noofhalls > 1 Then
           For n = 1 To noofhalls - 1
               TabControl2.TabPages.Add("Hall" & n + 1)
           Next
       End If

       For n = 0 To noofhalls - 1
           dg = New DataGridView 'run-time datagridview is created
           dg.Size = New System.Drawing.Size(500, 500)
           dg.RowCount = 15
           dg.ColumnCount = 4
           dg.Columns(0).Name = "Seat No." 'first column labels
           dg.Columns(1).Name = "Reg, No." 'second column labels
           dg.Columns(2).Name = "Seat No." 'third column labels
           dg.Columns(3).Name = "Reg, No." 'fourth column labels

           For k = 0 To 14
               dg.Rows(k).Cells(0).Value = k + 1 'defining the seat
           Next
           h = 0

           For k = 16 To 100
               dg.Rows(h).Cells(2).Value = k + 1
               h += 1
           Next

           TabControl2.TabPages(n).Controls.Add(dg)

       Next
       count = 0
       Dim x, y As Integer
       For Each Str1 In ListBox2.Items
           Dim sql1 As String = "select count(regd_no) from class_table where class ='" + Str1 + "'"
           Dim sql As String = "select regd_no from class_table where class ='" + Str1 + "'"
           cmd1 = New SqlCommand(sql, conn)
           cmd = New SqlCommand(sql1, conn)
           count = Convert.ToInt16(cmd.ExecuteScalar)
           dr = cmd1.ExecuteReader()
           x = 1
           y = 1
           If count <= 100 Then
               While dr.Read And x <= 100

                   If x <= 1 Then
                       dg.Rows(x - 1).Cells(1).Value = dr(0).ToString
                       x += 2
                   End If
                   If x > 15 Then
                       dg.Rows(y - 1).Cells(3).Value = dr(0).ToString
                       y += 2
                   End If

               End While


           End If
           dr.Close()
       Next

   End Sub


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

Это проект организации экзаменационного зала, и я уже установил в своем коде только 15 студентов, а затем пытаюсь увеличить их до некоторого значения "n", и это показывает ошибку, и я пытаюсь исправить их, но не могу решить коды...может ли кто-нибудь помочь мне с этим?.

1 Ответов

Рейтинг:
5

MadMyche

Для начала у вас есть множество проблем в вашем блоке SQL
Линия 1 уязвима для SQL Injection.
Линия 2 также уязвима
Строка 3 не нужна и увеличивает использование памяти
Строка 5 содержит синтаксическую ошибку - должно быть count = Convert.ToInt16(cmd.ExecuteScalar())

Dim sql1 As String = "select count(regd_no) from class_table where class ='" + Str1 + "'"
Dim sql As String = "select regd_no from class_table where class ='" + Str1 + "'"
cmd1 = New SqlCommand(sql, conn)
cmd = New SqlCommand(sql1, conn)
count = Convert.ToInt16(cmd.ExecuteScalar)
dr = cmd1.ExecuteReader()
НИКОГДА построение SQL-запроса путем объединения команд с переменными

Вот как я бы это написал; используя Параметры чтобы избавиться от этой уязвимости, исправьте синтаксическую ошибку и повторно используйте ее. cmd объекта путем простого изменения запроса и сохранения существующего параметра
Dim sql1 As String = "SELECT count(regd_no) FROM class_table WHERE class = @Str1"
Dim sql As String = "SELECT regd_no FROM class_table WHERE class = @Str1"

' cmd1 = New SqlCommand(sql, conn)

cmd = New SqlCommand(sql1, conn)
cmd.Parameters.AddWithValue("@Str1", Str1)

count = Convert.ToInt16(cmd.ExecuteScalar())

cmd.CommandText = sql
dr = cmd.ExecuteReader()


Maciej Los

5ed!

Nithish685

да, хорошо, я пытаюсь, и эта часть не имеет ошибки, тогда"если k=0 до 14 "эта строка показывает некоторую ошибку..Я тоже работаю с этим проектом ..

MadMyche

Немного более подробно об ошибке было бы полезно

Nithish685

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