0

Hello

How do I rectify this error, please: 'Argument not specified...'?

I have 4 columns in a MS Access database: username, strEmail, hashed, and salted. In my form field (on the Webpage), I have Name (username) and Email (strEmail) which are text fields and correspond to username.Text and strEmail.Text in the attached screenshot.

But how would I correct the "@hashed" and "@salted" errors in the attached screenshot? ArgumentNotSpecified.jpg

Thanks!

3
Contributors
4
Replies
33
Views
1 Month
Discussion Span
Last Post by Steve_43
0

Did you notice that the previous calls you made to .AddWithValue had two parameters? The error states "Argument not specified" so add a value parameter.

Edited by Reverend Jim

0

Thanks, Reverend Jim, for your reply.

If I do this:

 cmd.Parameters.AddWithValue("@hashed", hashed.Text)
 cmd.Parameters.AddWithValue("@salted", salted.Text)

VS (2017) tells me that hashed and salted are 'not declared' and a yellow light bulb appears to the left with a few suggestions:

ReverendJim.jpg

I am not too surprised about the 'not declared' errors because I don't use hashed.Text or salted.Text anywhere, but I wasn't sure if they referred to my code or to the columns in the database where I do have a hashed (text) column and a salted (text) column.

If you could shed any light on the above, I would be grateful.

Thanks again.

2

hashed and salted, as their names imply, seem to be booleans.
Don't use such names if they are not.
Your light bulb seems to indicate they are not declared.

0

Thanks again, ReverendThis is what I now have (below). I haven't been able to access my Web hosting service's server yet, but I am not getting any errors in Visual Studio and the page loads in my browser.

Regards

Public Function CreateRandomSalt() As String

        Dim mix As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+=][}{<>"
        Dim salt As String = ""
        Dim rnd As New Random
        Dim sb As New StringBuilder
        For i As Integer = 1 To 100 'Length of the salt
            Dim x As Integer = rnd.Next(0, mix.Length - 1)
            salt &= (mix.Substring(x, 1))
        Next
        Return salt
    End Function

Public Function Hash512(password As String, salt As String) As String
        Dim convertedToBytes As Byte() = Encoding.UTF8.GetBytes(password & salt)
        Dim hashType As HashAlgorithm = New SHA512Managed()
        Dim hashBytes As Byte() = hashType.ComputeHash(convertedToBytes)
        Dim hashedResult As String = Convert.ToBase64String(hashBytes)
        Return hashedResult
    End Function

Private Sub BtnReg_Click(sender As Object, e As EventArgs) Handles BtnReg.Click 'jmcilchenny suggestion 19.8.2018

        Dim hashedPasswordText As New Label With {.Text = (Hash512(password.Text, CreateRandomSalt))} 'work on this tomorrow 20/8/2018

        Using connection As New OleDbConnection("connectionString")

            Dim Sql As String = "INSERT INTO university (username,strEmail,hashed,salted) VALUES (@username,@strEmail,@hashed,@salted)"
            Dim cmd As New OleDbCommand(Sql)
            cmd.Connection = connection

            cmd.Parameters.AddWithValue("@username", username.Text)
            cmd.Parameters.AddWithValue("@strEmail", strEmail.Text)
            'Dim hashed As String
            Dim hashed As Boolean
            cmd.Parameters.AddWithValue("@hashed", hashed)
            'Dim salted As String
            Dim salted As Boolean
            cmd.Parameters.AddWithValue("@salted", salted)

            connection.Open()
            cmd.ExecuteNonQuery()

        End Using

       End Sub

Edited by Steve_43

Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.