当前位置:首页 > 行业动态 > 正文

安卓如何调用mysql数据库连接

前提条件与注意事项

MySQL数据库配置

  • 开启远程访问权限:修改mysql配置文件(如my.cnf),确保bind-address设置为0.0.0或指定IP。
  • 创建用户并授权:为Android应用创建专用数据库用户,并授予对应权限。
    CREATE USER 'android_user'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON database_name. TO 'android_user'@'%';
    FLUSH PRIVILEGES;
  • 开放防火墙端口:确保服务器3306端口(默认MySQL端口)对Android设备IP开放。

Android端限制与风险

  • 安全性问题:直接暴露数据库到公网存在SQL注入、暴力破解等风险。
  • 网络稳定性:移动设备网络环境复杂,长连接易中断。
  • 性能瓶颈:移动端直接操作数据库可能导致响应延迟。

实现步骤与代码示例

添加依赖库

build.gradle中添加MySQL JDBC驱动依赖:

安卓如何调用mysql数据库连接

安卓如何调用mysql数据库连接

dependencies {
    implementation 'mysql:mysql-connector-java:8.0.33'
}

配置网络权限

AndroidManifest.xml中声明网络权限:

<uses-permission android:name="android.permission.INTERNET" />

连接数据库代码

// 异步任务执行数据库操作(避免阻塞主线程)
new Thread(new Runnable() {
    @Override
    public void run() {
        Connection conn = null;
        try {
            // 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 构建连接字符串(替换为实际IP和数据库信息)
            String url = "jdbc:mysql://192.168.1.100:3306/database_name?useSSL=false&serverTimezone=UTC";
            String user = "android_user";
            String password = "password";
            // 建立连接
            conn = DriverManager.getConnection(url, user, password);
            // 执行查询
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT  FROM table_name");
            // 处理结果集
            while (rs.next()) {
                Log.d("MySQL", "Column1: " + rs.getString("column1"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接
            if (conn != null) {
                try { conn.close(); } catch (SQLException ignored) {}
            }
        }
    }
}).start();

替代方案推荐

方案 优点 缺点
直接连接MySQL 开发简单,无需额外服务 安全性低,需处理移动网络问题
通过Web API间接访问 安全性高,可控制权限 需要额外开发后端服务
使用云数据库服务 集成认证、负载均衡 可能有vendor锁定风险

常见问题与解答

问题1:如何提升移动设备与MySQL连接的安全性?

解答

安卓如何调用mysql数据库连接

  1. 使用SSL加密连接:在URL中添加useSSL=true,并在服务器配置SSL证书。
  2. 限制IP白名单:仅允许可信IP连接(如'android_user'@'192.168.1.100')。
  3. 最小化权限:仅为应用分配必要的数据库操作权限。

问题2:如果不想直接连接数据库,有什么替代方案?

解答

  1. RESTful API:搭建后端服务(如Spring Boot),通过HTTP接口与数据库交互。
  2. GraphQL:使用Apollo Server等工具提供灵活的数据查询接口。
  3. Firebase等BaaS:利用实时数据库或Cloud Firestore,减少自建服务器