将变量放入sql查询并标记名称vb.net

将变量放入sql查询并标记名称vb.net,vb.net,Vb.net,我在查询字符串和分配标签名中放置了一个变量。可能吗?如果是这样的话,那么为什么我的函数不起作用 我搜索了me.controls(label\u name),发现它可以工作,但为什么它在我的函数中不工作 Public Sub tallyRatingA() Try For n = 1 To 5 For m = 5 To 1 Call conn() query = "SELECT COUNT

我在查询字符串和分配标签名中放置了一个变量。可能吗?如果是这样的话,那么为什么我的函数不起作用

我搜索了
me.controls(label\u name)
,发现它可以工作,但为什么它在我的函数中不工作

Public Sub tallyRatingA()
    Try
        For n = 1 To 5
            For m = 5 To 1
                Call conn()
                query = "SELECT COUNT(a" & n & ") AS tallycount FROM evaluation where teacher_id = '" & tId & "' AND a" & n & " = " & m
                command = New MySqlCommand(query, connection)
                reader = command.ExecuteReader
                While (reader.Read)
                    If reader.HasRows Then
                        tally_count = reader.GetString("tallycount")
                    Else
                        tally_count = 0
                    End If
                End While
                reader.Close()
                connection.Close()
                Call conn()
                query = "SELECT SUM(a" & n & ") AS tallytotal FROM evaluation where teacher_id = '" & tId & "' AND a" & n & " = " & m
                command = New MySqlCommand(query, connection)
                reader = command.ExecuteReader
                While (reader.Read)
                    If reader.HasRows Then
                        tally_total = reader.GetString("tallytotal")
                        total = total + tally_total
                    Else
                        tally_total = 0
                    End If
                End While
                labelname = "a" & n & "_" & m
                Me.Controls(labelname).Text = tally_count & " ( fx: " & tally_total & " )"
                connection.Close()
                reader.Close()
                tally_total = 0
                tally_total = 0
                total = 0
                tally_count = 0
            Next m
        Next n
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

您应该修改循环并添加IFNULL以检查总和值

之前

For m = 5 To 1

query = "SELECT SUM(a" & n & ") AS tallytotal FROM evaluation where teacher_id = '" & tId & "' AND a" & n & " = " & m
之后

For m = 5 To 1 step -1

query = "SELECT IFNULL(SUM(a" & n & "),0) AS tallytotal FROM evaluation where teacher_id = '" & tId & "' AND a" & n & " = " & m

建议:从DataReader中检索值的更好方法是
reader.GetValue(reader.GetOrdinal(“tallytotal”)
为m=5到1的步骤-1编辑二次循环
,谢谢@MahadevMalkarthanks@CraigJohnson它起作用了。但他没有用,有什么建议吗?@Leomel,有什么错误吗?