mysql
配置文件(如my.cnf
),确保bind-address
设置为0.0.0
或指定IP。CREATE USER 'android_user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON database_name. TO 'android_user'@'%'; FLUSH PRIVILEGES;
在build.gradle
中添加MySQL JDBC驱动依赖:
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锁定风险 |
解答:
useSSL=true
,并在服务器配置SSL证书。'android_user'@'192.168.1.100'
)。解答: