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




