对登录模块使用区分大小写的SELECT查询

时间:2018-03-02 11:13:29

标签: sql vb.net visual-studio

我正在使用VS10中的vb.net开发一个带有用户管理的Windows窗体应用程序。我在用户尝试登录时使用以下代码:

Try     
        Dim sel As String
        sel = "SELECT uid, name, loginid, password, type FROM user_master WHERE loginid = '" & UsernameTextBox.Text & "' AND password = '" & PasswordTextBox.Text & "'"
        Dim cnn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\RSMS_DB.mdf;Integrated Security=True;User Instance=True")
        Dim da As New SqlDataAdapter(sel, cnn)
        Dim ds As New DataSet()
        da.Fill(ds)
        If ds.Tables(0).Rows.Count = 0 Then
            MsgBox("Wrong Username and Password Combination!", MsgBoxStyle.Critical, "Login Failed")
        Else
            current_uid = ds.Tables(0).Rows(0)(0)
            current_name = ds.Tables(0).Rows(0)(1)
            current_loginid = ds.Tables(0).Rows(0)(2)
            current_password = ds.Tables(0).Rows(0)(3)
            current_type = ds.Tables(0).Rows(0)(4)
            MsgBox("Welcome '" & ds.Tables(0).Rows(0)(1) & "'!", MsgBoxStyle.OkOnly, "Login Successful")
            Dim upd = "UPDATE user_master SET lastlogin = '" & System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") & "' WHERE uid = " & current_uid & ""
            Dim cmd As New SqlCommand(upd, cnn)
            cnn.Open()
            cmd.ExecuteNonQuery()
            If checkboxLoginState.Checked = True Then
                cmd.CommandText = "INSERT INTO login_state VALUES('" & current_uid & "', '" & current_name & "', '" & current_loginid & "', '" & current_password & "', '" & current_type & "')"
                cmd.ExecuteNonQuery()
            End If
            cnn.Close()
            load_user_permissions(current_uid) 'DISABLING OPTIONS ACCORDING TO USER RIGHTS 
            Me.Close()
        End If
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, "Database Error")
    End Try

我想问的是,这是否是正确的方法? SELECT Query是否区分大小写敏感?

1 个答案:

答案 0 :(得分:0)

SQL关键字不区分大小写(SELECT,FROM,WHERE等),但通常以全部大写形式编写。但是在某些设置中,表和列名称区分大小写。通常区分大小写的表和列名称是默认值。如果您想更改它,则可以根据数据库的整理设置更改它。

Source - this也可能对您有所帮助。

如果安全性对您很重要,那么您应该对密码进行哈希处理 - 不要将密码保存为纯文本!你应该看看the library libsodium

相关问题