You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android Studio中JDBC连接SQL Server 2019遇用户登录失败问题求助

解决Android Studio JDBC连接SQL Server 2019的"login failed for user"错误

先看最明显的核心问题:你的ConnectionClass用户名参数被注释掉了!这直接导致连接数据库时传入的用户名为空,必然会触发登录失败的错误。赶紧取消user_name的注释,填入正确的SQL Server登录账号:

public class ConnectionClass {
    public static String ip= "***.***.*.*:1433";
    public static String user_name ="你的SQL Server登录用户名"; // 取消注释并填写正确值
    public static String password = "****";
    public static String database = "tests";
}

除了这个问题,还有几个可以进一步排查的方向:

  • 调整jTDS连接字符串参数
    SQL Server 2019默认可能要求加密连接,你可以在连接字符串里明确添加encrypt=false(测试阶段使用,生产环境建议配置合法加密);如果是命名实例,记得加上instance参数:

    connectionUrl = "jdbc:jtds:sqlserver://" + server + "/" + database + ";user=" + user + ";password=" + password + ";encrypt=false;";
    
  • 验证SQL账号的权限与可用性
    用SQL Server Management Studio(SSMS)直接用这个账号登录,确认:

    • 能正常连接到目标SQL Server实例
    • 拥有tests数据库的INSERT权限(可以通过给账号添加db_datawriter角色快速配置)
    • 账号没有被锁定或禁用
  • 再次确认网络连通性
    即使排查过防火墙,也可以在Android设备所在的网络环境下,用telnet命令测试端口是否可达:

    telnet ***.***.*.* 1433
    

    如果不通,检查SQL Server配置管理器里的TCP/IP协议是否绑定了正确的IP地址(不要只绑定127.0.0.1);如果是远程服务器,还要确认路由器的端口映射是否正确配置。

  • 优化异常反馈,方便排查
    你的AsyncTask里捕获了异常,但没有在UI层展示错误详情,建议修改onPostExecute方法,把错误信息直观显示出来:

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        // 清空输入框
        name.setText("");
        email.setText("");
        password.setText("");
        confirmPassword.setText("");
        // 显示结果状态
        if (!isSuccess) {
            status.setText("注册失败: " + z);
        } else {
            status.setText("注册成功");
        }
    }
    

    这样能更清晰看到具体的错误细节,帮助你进一步定位问题。

内容的提问来源于stack exchange,提问作者Daniel Reuveni

火山引擎 最新活动