VB.net SQL语句不区分大小写,以及空格的问题

在写用户登录发现直接用Select语句,同时搜索用户密码时候,发现密码的大小写不是区分的,例如密码是a,输入a或者A,都可以登陆成功。

解决方法:先根据用户名搜索密码,把密码赋值给一个变量,再比对。

        '=============根据ComboBox1.Text中的选项返回给ComboBox2.Text用户的默认语言===============
        Dim myconnection As New OleDbConnection(PubDB) '连接数据库
        Dim mycommand As OleDbCommand
        '=============数据库的操作命令========================
        Dim s As String = "select 密码 from userlist where 用户名 = '" & ComboBox1.Text & "'"
        Dim i As String
        myconnection.Open()
        mycommand = New OleDbCommand(s, myconnection)
        Dim rs As OleDbDataAdapter = New OleDb.OleDbDataAdapter(mycommand)
        Dim sdate As New DataTable
        rs.Fill(sdate)
        i = sdate.Rows(0).Item(0)
        myconnection.Close()
        If i = Trim(TextBox1.Text) Or TextBox1.Text = PubKey Then
            MsgBox("登录成功!", 0 + 48, "提示")
            TextBox1.Text = "" '====================================初始化密码
            Me.Close()
            Me.Dispose()
        Else
            MsgBox("用户名不存在或者密码错误!", 0 + 48, "提示")
            TextBox1.Text = "" '=====================================初始化密码
            TextBox1.Focus()
        End If


 

创建用户名的时候,也要注意:当创建abc,Abc和ABC三个用户名的时候,当修改密码,或者其他属性的,会一起过把所有的用户的相同属性改为同一样。

解决方法:调用Lcase函数或 Ucase函数 屏蔽大小写一样的用户名。

'=============根据ComboBox1.Text中的选项返回给ComboBox2.Text用户的默认语言===============
            Dim myconnection As New OleDbConnection(PubDB)
            Dim mycommand As OleDbCommand
            '=============数据库的操作命令========================指令需要改为搜索用户名的所有值
            Dim s As String = "select 用户名 from userlist"
            '===============操作数据库=======================
            myconnection.Open()
            mycommand = New OleDbCommand(s, myconnection)
            Dim rs As OleDbDataAdapter = New OleDb.OleDbDataAdapter(mycommand)
            Dim sdate As New DataTable
            rs.Fill(sdate)
            Dim i As Integer
            For i = 0 To sdate.Rows.Count - 1
                If LCase(Trim(TextBox1.Text)) = LCase(Trim(sdate.Rows(i).Item(0))) Then
                    MsgBox("已存在用户:" & TextBox1.Text & "", 0 + 48, "提示")
                    TextBox1.Text = ""
                    TextBox2.Text = ""
                    TextBox1.Focus()
                End If


为了防止用户输入密码的时候按多一个空格提示输入错误,因而调用Trim()函数自动把用户多输入的空格删除。因而引发一个问题就是如果创建多个空格的用户名或者空格密码的时候,会出现,无论输入一个或者多个空格都能成功登入系统。

解决方法:禁止空格的录入产生。

        If e.KeyChar = ChrW(32) Then
            e.Handled = True
            MsgBox("密码不能含有空格!", 0 + 48, "提示")
            TextBox2.Clear()
            TextBox2.Focus()
        End If


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值