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

Android登录界面连接MS SQL Server失败,求问题排查与优化方案

问题分析与解决方案

一、当前报错的直接原因

从错误日志:

E/ERROR: Unknown server host name 'Unable to resolve host "myipaddresstestDatabasetestDatabase": No address associated with hostname'.

可以看出数据库连接的主机名解析失败,结合代码先排查以下核心问题:

  1. Driver类名拼写错误
    你定义的Driver路径是net.sourceforge.jtds.jtbc.Driver,正确的jTDS驱动类名应为net.sourceforge.jtds.jdbc.Driver(注意是jdbc而非jtbc),这个错误会导致驱动加载失败,直接影响连接建立。

  2. ConnectionHelper类的CONN()方法实现问题
    代码中调用了ConnectionHelper.CONN()但未给出该类实现,报错里的畸形主机名myipaddresstestDatabasetestDatabase说明该方法可能未正确使用你定义的url变量,存在硬编码错误或拼接逻辑问题。确保CONN()方法正确实现:

    // 建议把变量名Class改成driverClass,避免和关键字冲突
    Class.forName(driverClass);
    Connection conn = DriverManager.getConnection(url, username, password);
    
  3. 网络与数据库配置问题

    • 确认Android设备能ping通SQL Server所在IP,端口(默认1433)是否开放
    • 检查SQL Server是否开启远程连接、启用TCP/IP协议
    • 服务器防火墙是否放行该端口的入站请求

二、当前代码的其他隐患

  1. SQL注入风险
    直接将用户输入的emailId拼接进SQL语句:

    String query = "Select * from testDatabase where UserId='" + emailId + "'";
    

    这会导致严重的SQL注入攻击,正确做法是使用参数绑定:

    String query = "Select * from testDatabase where UserId=?";
    PreparedStatement ps = connect.prepareStatement(query);
    ps.setString(1, emailId); // 绑定参数
    
  2. StrictMode不当使用
    你在onCreate中设置了StrictMode.ThreadPolicy.Builder().permitAll(),但已经用AsyncTask处理后台操作,完全不需要这个设置,反而会隐藏线程违规问题,建议删除。

  3. AsyncTask已过时
    Android API 30及以上版本中AsyncTask已被废弃,推荐使用Kotlin协程或Java ExecutorService处理后台任务。

  4. 严重安全问题
    在Android客户端直接连接SQL Server并硬编码数据库账号密码,会导致敏感信息被反编译获取,这是客户端直连数据库的致命缺陷。

三、更优实现方案

强烈不建议在Android客户端直接连接SQL Server,正确架构如下:

  1. 搭建后端服务(如Spring Boot、ASP.NET Core),由后端负责连接SQL Server,提供登录接口(例如POST请求/api/login)。
  2. Android端通过Retrofit/OkHttp发送HTTP请求,传递用户名和密码到后端接口。
  3. 后端接口验证用户信息(查询数据库、比对加密存储的密码,推荐用BCrypt加密),返回登录结果及身份凭证(如JWT Token)。
  4. Android端根据返回结果处理页面跳转,后续请求携带Token完成身份验证。

该方案优势:

  • 避免数据库敏感信息暴露在客户端
  • 统一处理业务逻辑与安全验证
  • 降低客户端与数据库耦合,便于后续扩展维护

内容的提问来源于stack exchange,提问作者Jesse Tee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:35:48