Du skal umiddelbart have flyttet dine erklæringer af variable ind i click event-handleren, således:
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Net.Mail
Imports System.Data
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub CreateUser_Click(sender As Object, e As System.EventArgs) Handles CreateUser.Click
Dim con As SqlConnection
Dim sSQL As String
con = New SqlConnection(ConfigurationManager.ConnectionStrings("dbConnection").ConnectionString)
con.Open()
sSQL = "INSERT INTO UserTBL (Name,Email,Username,Password,Gender,Country,Bday,Enable,Authed,AuthKey)" & _
" VALUES (@Name,@Email,@Username,@Password,@Gender,@Country,@Bday,@Enable,@Authed,@AuthKey)"
Dim cmd As New SqlCommand(sSQL, con)
Dim randomKey As String = Replace(System.Guid.NewGuid().ToString(), "-", "")
cmd.Parameters.Add(New SqlParameter("@Name", Name.Text))
cmd.Parameters.Add(New SqlParameter("@Email", Email.Text))
cmd.Parameters.Add(New SqlParameter("@Username", Username.Text))
cmd.Parameters.Add(New SqlParameter("@Password", Password.Text))
cmd.Parameters.Add(New SqlParameter("@Gender", Gender.Text))
cmd.Parameters.Add(New SqlParameter("@Country", Country.Text))
cmd.Parameters.Add(New SqlParameter("@Bday", Bday.Text & "-" & Bmonth.Text & "-" & Byear.Text))
cmd.Parameters.Add(New SqlParameter("@Enable", "0"))
cmd.Parameters.Add(New SqlParameter("@Authed", "0"))
cmd.Parameters.Add(New SqlParameter("@AuthKey", randomKey))
cmd.ExecuteNonQuery()
con.Close()
End Sub
End Class
Når det så er sagt, bør du slet ikke lægge databaselogik i en event-handler, men derimod i et databsaelag.
Jeg er klar over at du er i en læringsprocess, så derfor skal dette opfattes som et råd til dit næste fokusområde... .-)
Du bør overveje at kigge lidt på objektorientering og mulighederne for at pakke dine data og handlinger ind og adskille dem vha. objekter. Jeg har selv arbejdet med ASP i 10 år, så jeg ved godt, at det ikke er det mest oplagte at kode på den måde heri (bla. pga. det include-helvede man typisk kommer til at stå i, men også fordi objektorientering ikke er fuldt implementeret i ASP - der mangler arv). Dette er ikke et problem i .NET og det faktum bør derfor udnyttes til fulde :-)