Vb.net 比较标签上的数字

Vb.net 比较标签上的数字,vb.net,numbers,Vb.net,Numbers,例如,我正在检查一个数字是否介于两组数字之间。如果x小于或等于300但大于或等于60,这是我的代码 Private Sub CheckMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckMode.Click cn = New ADODB.Connection rs = New ADODB.Recordset conDB() cn.Open()

例如,我正在检查一个数字是否介于两组数字之间。如果x小于或等于300但大于或等于60,这是我的代码

Private Sub CheckMode_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckMode.Click
    cn = New ADODB.Connection
    rs = New ADODB.Recordset
    conDB()
    cn.Open()
    rs.Open("Select * From tb_client_mode", cn, 0, 3)
    Dim strClass = GetSessionClass.Text
    Dim strFree = GetSessionFree.Text
    Do While Not rs.EOF
        If rs("st_mode").Value = strClass And TimePerDay.Text = "0" Then
            ClassSession()
            ModeCatchTimer.Stop()
            ModeCatchTimer.Enabled = False
            ModeLabel.Text = "classtime"
            MsgBox("Class Session, Your time will not be deducted", MsgBoxStyle.Information, "")
            Me.Select()
            Exit Sub
        ElseIf rs("st_mode").Value = strFree And TimePerDay.Text = "0" Then
            ModeCatchTimer.Stop()
            ModeCatchTimer.Enabled = False
            cn.BeginTrans()
            cn.Execute("UPDATE tb_registration SET st_log='out' WHERE st_acc_number='" & id_lbl.Text & "'")
            cn.CommitTrans()
            cn.Close()
            Using ClientLockx As New ClientLock
                ClientLock.ShowDialog()
            End Using
            Me.Close()
            Exit Sub
        ElseIf rs("st_mode").Value = strClass Then
            ClassSession()
            ModeCatchTimer.Stop()
            ModeCatchTimer.Enabled = False
            ModeLabel.Text = "classtime"
            MsgBox("Class Session, Your time will not be deducted", MsgBoxStyle.Information, "")
            Me.Select()
            Exit Sub
        ElseIf rs("st_mode").Value = strFree And (TimePerDay.Text <= "298") & TimePerDay.Text >= "59" Then
            FreeSessionMinutesLeft()
            ModeCatchTimer.Stop()
            ModeCatchTimer.Enabled = False
            ModeLabels.Text = "freetime"
            MsgBox("Free Session, Your Time will be deducted", vbOKOnly + vbSystemModal, "")
            Me.Select()
            Exit Sub
        ElseIf rs("st_mode").Value = strFree And (TimePerDay.Text <= "58") & TimePerDay.Text >= "1" Then
            FreeSessionSecondsLeft()
            ModeCatchTimer.Stop()
            ModeCatchTimer.Enabled = False
            ModeLabel.Text = "freetime"
            MsgBox("Free Session, Your Time will be deducted", vbOKOnly + vbSystemModal, "")
            Me.Select()
            Exit Sub
        Else
            rs.MoveNext()
        End If
    Loop
    Exit Sub
End Sub
Private-Sub-CheckMode\u单击(ByVal-sender作为System.Object,ByVal-e作为System.EventArgs)处理CheckMode。单击
cn=新的ADODB.Connection
rs=新的ADODB.Recordset
conDB()
cn.Open()
rs.Open(“从tb\U客户端\U模式中选择*”,cn,0,3)
Dim strClass=GetSessionClass.Text
Dim strFree=GetSessionFree.Text
做而不做
如果rs(“st_模式”).Value=strClass和TimePerDay.Text=“0”,则
类会话()
ModeCatchTimer.Stop()
ModeCatchTimer.Enabled=False
ModeLabel.Text=“classtime”
MsgBox(“上课时间,您的时间不会被扣除”,MsgBoxStyle.Information,”)
Me.Select()
出口接头
ElseIf rs(“st_模式”).Value=strFree和TimePerDay.Text=“0”然后
ModeCatchTimer.Stop()
ModeCatchTimer.Enabled=False
cn.BeginTrans()
cn.Execute(“UPDATE tb\u registration SET st\u log='out'其中st\u acc\u number='”&id\u lbl.Text&“”)
cn.CommitTrans()
cn.Close()
将ClientLockx用作新ClientLock
ClientLock.ShowDialog()
终端使用
我
出口接头
ElseIf rs(“st_模式”)。值=strClass Then
类会话()
ModeCatchTimer.Stop()
ModeCatchTimer.Enabled=False
ModeLabel.Text=“classtime”
MsgBox(“上课时间,您的时间不会被扣除”,MsgBoxStyle.Information,”)
Me.Select()
出口接头
ElseIf rs(“st_模式”).Value=strFree和(TimePerDay.Text=“59”然后
FreeSessionMinutesLeft()
ModeCatchTimer.Stop()
ModeCatchTimer.Enabled=False
ModeLabels.Text=“空闲时间”
MsgBox(“免费会话,您的时间将被扣除”,vbOKOnly+vbSystemModal,”)
Me.Select()
出口接头
ElseIf rs(“st_模式”).Value=strFree和(TimePerDay.Text=“1”然后
FreeSessionSecondsLeft()
ModeCatchTimer.Stop()
ModeCatchTimer.Enabled=False
ModeLabel.Text=“空闲时间”
MsgBox(“免费会话,您的时间将被扣除”,vbOKOnly+vbSystemModal,”)
Me.Select()
出口接头
其他的
R.MoveNext()
如果结束
环
出口接头
端接头
我得到了这个错误 从字符串“true288”到类型“Double”的转换无效。
我做错了什么。我是vb.net新手,请先告诉我,字符串不是数字。所以这不是一个好主意:

TimePerDay.Text <= "298"

除此之外,您还可以使用sql参数。您需要使用吗?

您在哪里将字符串转换为双精度?我看不到比较数字的代码。除此之外,您还可以使用sql注入。使用sql参数。很抱歉。我编辑了我的帖子,在这里获取错误“ElseIf rs”(“st_模式”).Value=strFree和(TimePerDay.Text=“59”然后”.啊。所以我从数据库中得到的数值是字符串?现在我知道了,我已经搜索了sql参数,我很快就会实现它们。系统和网站是否为sql注入开放?我认为sql注入只适用于网站。我将对此进行更多研究。感谢您不遗余力地回答我的问题。我是编程新手而vb.net是我的主要工具。@leoelvinley:
TimePerDay.Text
是一个
字符串,必须首先解析为
Int32
。如果访问数据库时不使用SQL参数而使用字符串串联(如
…其中st_acc_number='“&id\u lbl.Text&'”
),则可以进行SQL注入.网站更重要,因为它们大多是通过互联网访问的。我知道,在我完成我的项目后,这是一个使用wampserver作为连接和数据库的计算机管理系统,因为我不知道如何使用winsockets,我将修改所有内容并使用sql参数进行设置,以便我可以练习和习惯。我再次学到了一些东西g今天。谢谢:)。
Dim timePerDay As Int32
If Int32.TryParse(TimePerDay.Text, timePerDay) AndAlso timePerDay <= 298 Then
    ' ... '
Else
    MesageBox.Show("Invalid number")
End If