VB.NET SQL限制提交尝试

布伦特·沙纳汉

我有一个提交页面,我需要限制用户在特定时间段内可以尝试的次数。

有一个存储过程被调用,它检查数据库1中的某些数据,并记录IP地址和表单提交到数据库2中的日期/时间。

我需要做的就是检查该IP地址在30分钟的时间内记录了多少次尝试,如果该次数超过5,则限制进一步的提交尝试。

这是我的VB代码:

Protected Sub btn_Cont_Click(sender As Object, e As EventArgs) Handles btn_Cont.Click
    Dim StudentIDLast4 As Integer = Val(textSSN.Text)
    Dim StudentIDInst As String = textSID.Text.ToUpper
    Dim DateOfBirth As String = textDOB.Text
    Dim IPaddress As String = Request.UserHostAddress()

    Dim sqlConnection1 As New SqlConnection("Data Source=(localdb)\v11.0;Initial Catalog=tempdb;Integrated Security=True")
    Dim cmd As New SqlCommand
    Dim returnValue As String
    Dim returnCount As Integer

    cmd.CommandText = "proc_ReverseTransferConsent_Find_Match"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.AddWithValue("@StudentIDLast4", StudentIDLast4)
    cmd.Parameters.AddWithValue("@StudentIDInst", StudentIDInst)
    cmd.Parameters.AddWithValue("@DateOfBirth", DateOfBirth)
    cmd.Parameters.AddWithValue("@IPaddress", IPaddress)

    cmd.Connection = sqlConnection1

    Dim sqlConnection2 As New SqlConnection("Data Source=(localdb)\v11.0;Initial Catalog=tempdb;Integrated Security=True")
    Dim attempts As String
    Dim comm As New SqlCommand("SELECT [Count] = COUNT(*) FROM ReverseTransferConsent_Attempt WHERE IPaddress = @IPaddress AND CreatedDate > DATEADD(MINUTE, -30, GETDATE())")
    Dim ap As New SqlDataAdapter(comm.CommandText, sqlConnection1)
    Dim ds As New DataSet()
    comm.Parameters.AddWithValue("@IPaddress", IPaddress)

    If Page.IsValid Then
        sqlConnection2.Open()
        ap.Fill(ds)
        attempts = ds.Tables(0).Rows.Count.ToString()
        sqlConnection2.Close()

        sqlConnection1.Open()
        returnValue = Convert.ToString(cmd.ExecuteScalar())
        sqlConnection1.Close()
        returnCount = returnValue.Length
        If attempts <= 5 Then
            If returnCount > 4 Then
                Response.Redirect("RTAgreement.aspx?rVal=" + returnValue)
            Else
                Label2.Text = StudentIDInst
            End If
        ElseIf attempts > 5 Then
            Label2.Text = "Only 5 submission attempts allowed per 30 minutes"
        End If
    End If
End Sub

这给了我错误:

System.Data.dll中发生类型'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理

附加信息:必须声明标量变量“ @IPaddress”。

我使用AddWithValue声明了变量。那不正确吗?

西蒙

问题是您SqlDataAdapter实例化了使用的命令文本(传递查询而不传递参数),因此它没有传递参数:

Dim ap As New SqlDataAdapter(comm.CommandText, sqlConnection1)

您应该改用命令,并通过连接实例化命令:

Dim comm As New SqlCommand("SELECT [Count] = COUNT(*) FROM ReverseTransferConsent_Attempt WHERE IPaddress = @IPaddress AND CreatedDate > DATEADD(MINUTE, -30, GETDATE())", sqlConnection1)
Dim ap As New SqlDataAdapter(comm)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VB.NET SQL语句

来自分类Dev

vb.net TextBox提交未更改

来自分类Dev

尝试...捕获...最后在VB.NET中

来自分类Dev

连接SQL Express 2012 vb.net

来自分类Dev

vb.net sql参数化

来自分类Dev

sql update命令的vb.net问题

来自分类Dev

从SQL查询到vb.net的数据

来自分类Dev

在VB.net中汇总SQL查询

来自分类Dev

VB .NET使用SQL填充DataGridView

来自分类Dev

SQL日期时间溢出。Vb.net

来自分类Dev

VB.Net无法连接到SQL

来自分类Dev

VB.Net中的SQL语句错误

来自分类Dev

vb.net中的SQL交易语句

来自分类Dev

SQL / VB.net-无效的操作异常

来自分类Dev

来自 VB.net 的 SQL 子查询

来自分类Dev

使用onClick提交按钮通过vb.net表单将数据发布到SQL表

来自分类Dev

SQL结果演示asp.net vb.net

来自分类Dev

VB.NET Access数据库255列限制

来自分类Dev

尝试学习如何在VB.net中使用IndexOf

来自分类Dev

尝试在VB.NET中使用C#Web服务

来自分类Dev

尝试在vb.net中使用的PDF打印库问题

来自分类Dev

尝试为EdgeJS创建VB.Net集成

来自分类Dev

VB.Net SQL结果转换为JSON for Ajax

来自分类Dev

vb.Net&Access是/否SQL执行错误

来自分类Dev

VB .Net,SQL Server 2012 Express数据库连接

来自分类Dev

对SQL选择语句使用全局变量-VB.NET

来自分类Dev

运行SQL存储过程并返回打印消息vb.net

来自分类Dev

在循环VB.Net中加载SQL参数时出错

来自分类Dev

Linq To SQL覆盖SubmitChanges方法(VB.NET)