【发布时间】:2019-06-02 18:14:04
【问题描述】:
大家好,
我最近才开始使用 ASP.NET 和 VB.NET 进行编程,所以我一直在玩弄语法和逻辑。无论如何,我有一个 SQL 查询,它根据输入的用户名获取用户的详细信息。我的问题是:因为我从数据库表中选择 *,我如何将这些值放入变量中?我想保存到变量的值是 ID、Firstname 和 Lastname。我的计划是保存当前登录的用户 ID,这样它就会显示在我的应用程序中。
这是我所拥有的:
Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
Dim strconn As New SqlConnection
If strconn.State = ConnectionState.Closed Then
strconn.ConnectionString = ("Server=0.0.0.0;Database=Test;Uid=test;Pwd=test;")
End If
'//prompt user for blank user credentials
If txtUsername.Text.Length = 0 Then
Response.Write("<SCRIPT LANGUAGE=""JavaScript""> alert('You must enter your Access Credentials.');</script>")
'If MsgBox("You must enter your Access Credentials.", vbInformation, vbOKCancel) Then
'End If
txtUsername.Focus()
Exit Sub
End If
Try
strconn.Open()
Dim sQuery As String = "SELECT * from tblUsers WHERE username = '" & txtUsername.Text & "'" &
" AND password = '" & txtPassword.Text & "'" &
" AND status ='" & "1" & "'"
Dim datareader As SqlDataReader
Dim adapter As New SqlDataAdapter
Dim parameter As New SqlParameter
Dim command As SqlCommand = New SqlCommand(sQuery, strconn)
command.Connection = strconn
adapter.SelectCommand = command
datareader = command.ExecuteReader()
If datareader.HasRows Then
datareader.Read()
'MsgBox("Login Successfull! ", vbInformation, vbOKOnly)
'Response.Redirect("http://localhost:0000/SecurityStaffDataEntry.aspx")
Response.Redirect("http://localhost:0000/index.aspx")
datareader.Close()
LoginOk = True
Else
Response.Write("<SCRIPT LANGUAGE=""JavaScript""> alert('Invalid Username or Password!');</script>")
' MsgBox("Invalid Username or Password! ", vbInformation, vbOKOnly)
txtUsername.Text = ""
txtPassword.Text = ""
txtUsername.Focus()
End If
datareader.Close()
Catch ex As Exception
'MsgBox(ex.Message)
End Try
End Sub
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
-
感谢 marc_s 的链接。继续讨论链接中的内容,我的 SELECT 语句会是什么样子?可能像这样:' "SELECT * from tblUsers WHERE username = '" & @txtUsername.Text & "'" &'
-
它应该类似于:
SELECT * FROM tblUsers WHERE username = @userName .....,然后您将@userName参数的值分别设置为txtUsername.Text- 不是在创建 SQL 语句时直接设置 -
对不起,我缺乏知识,但是我将如何将@Username 参数的值设置为 txtUsername.Text?
-
感谢@marc_s 的那篇文章。我已经尝试了文章中讨论的内容,并且效果很好。而且代码看起来也很整洁
标签: asp.net vb.net visual-studio