Android App 不能直接連接遠程 MySQL 數據庫。JDBC 驅動體積大、明文密碼風險、網絡不穩定、無連接池管理,Google 明確不建議且逐漸移除支持。
[Android App] --HTTP/JSON--> [Web Server (Spring Boot/Node.js/PHP)] --JDBC/ORM--> [MySQL]
// 登錄
POST /api/auth/login {username, password} → {token, userInfo}
// 筆記列表
GET /api/notes?page=1&size=20 Authorization: Bearer → {list, total}
// 新增筆記
POST /api/notes {title, content} Authorization: Bearer → {id, createdAt}
// 刪除筆記
DELETE /api/notes/{id} Authorization: Bearer → {success: true}
// Retrofit + OkHttp + Gson
public interface ApiService {
@POST("auth/login")
Call login(@Body LoginRequest request);
@GET("notes")
Call> getNotes(@Query("page") int page, @Query("size") int size);
}
// 使用
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://your-server.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService api = retrofit.create(ApiService.class);
api.login(new LoginRequest("user", "pass")).enqueue(new Callback() {
@Override public void onResponse(Call call, Response resp) {
if (resp.isSuccessful()) saveToken(resp.body().token);
}
@Override public void onFailure(Call call, Throwable t) {
Log.e("API", "登錄失敗", t);
}
});
build.gradle 配置網絡權限 <uses-permission android:name="android.permission.INTERNET"/>。10.0.2.2 映射宿主機 localhost,真機訪問宿主機局域網 IP。.sql 已導入 MySQL,服務端 application.yml 數據庫連接配置正確。| 誤區 | 正確做法 |
|---|---|
| Android 直接 JDBC 連 MySQL | 服務端提供 REST API,Android 走 HTTP |
| 以為導入 SQL 就能用 | 需服務端代碼運行並暴露接口 |
| 模擬器用 localhost 訪問本機服務 | 用 10.0.2.2 |
Android 只負責「調用接口、展示數據」,所有數據庫操作下沉到服務端,這是移動應用架構的鐵律。