首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 項目導入後無法連接數據庫:架構誤區與正確 API 設計

     編輯:程式設計疑難解答

問題本質

Android App 不能直接連接遠程 MySQL 數據庫。JDBC 驅動體積大、明文密碼風險、網絡不穩定、無連接池管理,Google 明確不建議且逐漸移除支持。

正確架構:Client-Server + REST API


[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}

Android 端調用示例


// 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);
    }
});

導入項目後的檢查清單

  1. 確認服務端項目 (MyEclipse) 能正常啟動,API 可用(Postman 測試)。
  2. Android 端 build.gradle 配置網絡權限 <uses-permission android:name="android.permission.INTERNET"/>。
  3. 若服務端在本機,模擬器訪問 10.0.2.2 映射宿主機 localhost,真機訪問宿主機局域網 IP。
  4. 檢查服務端防火牆/安全組開放端口(8080/8443)。
  5. 數據庫腳本 .sql 已導入 MySQL,服務端 application.yml 數據庫連接配置正確。

常見誤區對照

誤區正確做法
Android 直接 JDBC 連 MySQL服務端提供 REST API,Android 走 HTTP
以為導入 SQL 就能用需服務端代碼運行並暴露接口
模擬器用 localhost 訪問本機服務用 10.0.2.2

Android 只負責「調用接口、展示數據」,所有數據庫操作下沉到服務端,這是移動應用架構的鐵律。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved