Vb.net 比较标签上的数字
例如,我正在检查一个数字是否介于两组数字之间。如果x小于或等于300但大于或等于60,这是我的代码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()
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