You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET连接SQL Server:客户登录模块失效问题求助

问题排查与修复方案

核心问题分析

你的客户登录模块失效主要有两个明确原因,还有一个潜在风险需要修正:

  1. 表名不匹配
    你明确说明数据库中客户表是tbCustomer,但客户登录代码里查询的是tbLogin表,这直接导致查询目标错误,自然无法匹配到客户记录。

  2. SQL语句的空格冗余
    客户登录SQL中,username条件写成了' " + txtUsername.Text + " ',这会在输入的用户名前后自动添加空格。比如你输入customer001,实际执行的SQL会查询username=' customer001 ',和数据库中无空格的username记录完全不匹配,导致返回空结果。

  3. SQL注入风险(必须修复)
    当前用字符串拼接生成SQL的方式存在严重的SQL注入漏洞,同时也容易出现这类字符串格式错误,强烈建议改用参数化查询。

修复后的客户登录代码示例

' 注意:替换Initial Catalog为你的业务数据库名称,不要使用master系统库
Using con As New SqlConnection("Data Source=LEGIONPC;Initial Catalog=你的业务库名;Integrated Security=True")
    con.Open()
    ' 修正表名为tbCustomer,同时使用参数化查询
    Using cmd As New SqlCommand("select * from tbCustomer where username=@Username and pass=@Password", con)
        ' 添加参数,避免注入和格式错误
        cmd.Parameters.AddWithValue("@Username", txtUsername.Text.Trim()) ' Trim()可防止用户输入首尾空格干扰匹配
        cmd.Parameters.AddWithValue("@Password", txtPassword.Text.Trim())
        
        Using sda As New SqlDataAdapter(cmd)
            Dim dt As New DataTable()
            sda.Fill(dt)

            If dt.Rows.Count > 0 Then
                MessageBox.Show("Correct.", "Log-In")
            Else
                MessageBox.Show("Invalid.", "Log-In")
            End If
        End Using
    End Using
End Using

额外建议

  • 管理员登录代码也存在同样的空格问题和SQL注入风险,建议同步按照上述方式修复。
  • 不要将业务表放在master系统数据库中,创建独立的业务数据库,并修改连接字符串中的Initial Catalog为对应库名。
  • 密码不要明文存储,应该使用哈希算法(比如SHA256)加密后存储,登录时对输入密码加密再比对。

内容的提问来源于stack exchange,提问作者Eren Birb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:50:30