亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們可以使用JDBC在Android中連接遠程MySQL數據庫嗎?

我們可以使用JDBC在Android中連接遠程MySQL數據庫嗎?

慕碼人8056858 2019-10-11 13:58:10
我正在開發需要遠程數據庫連接的客戶端服務器應用程序。我知道網絡上的教程以及越來越多的人正在使用PHP與MySQL進行交互。但是,我不太擅長PHP,以前的經驗是使用Core Java,Swing和JDBC。如果可以在Android應用程序中使用JAVA JDBC API連接遠程MySQL數據庫,誰能指導我?
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

基本上:您可以連接到MySQL(或您使用的任何服務器)服務器,但不應直接從Android應用程序執行此操作。


原因:


可以對Android應用程序進行反編譯,并且客戶端將具有訪問數據庫的憑據。如果使用正確的黑客工具(如Backtrack),則此惡意客戶端可以訪問,連接和利用數據庫中的數據。


如果您的應用程序適用于世界各地的客戶端,則客戶端應按一個操作或一組操作打開并維護與數據庫的連接。即使您的PC客戶端位于數據庫引擎服務器旁邊的LAN中,打開物理數據庫連接也要花費很多時間。現在,想象一下從世界另一端的一個國家(例如中國或日本)或從南美的一個國家(例如巴西或秘魯)(我居住的國家)建立連接。


由于上述兩個原因,即使嘗試直接從您的電話設備連接到MySQL或任何其他數據庫引擎,這也是一個壞主意。


如何解決這個問題呢?使用面向服務的體系結構,其中至少要有兩個應用程序:


服務提供商應用程序。該應用程序將創建和發布Web服務(最好是RESTful),并可以建立使用Web服務的策略,例如用戶身份驗證和授權。該應用程序還將連接到數據庫并對數據庫執行CRUD操作。


服務使用者應用程序。這將是您的Android(或任何其他移動設備)應用程序。


從您的問題出發,您將重點放在第1點上。正如我在評論中所說,您可以使用Java創建一個Web應用程序,在其中創建一個RESTful服務,該服務可以歸結為一個POJO(普通的舊Java對象),每個服務都有一個方法。在這種方法中,由于畢竟是純Java,因此您可以添加其他功能,例如JDBC使用。


這是一個使用Jersey,Jackson(JSON庫)和JDBC的啟動示例:


@Path("/product")

public class ProductRestService {


    @GET

    @Path("/list")

    @Produces(MediaType.APPLICATION_JSON)

    public List<Product> getProducts() {

        List<Product> productList = new ArrayList<>();

        Connection con = ...; //retrieve your database connection

        Statement stmt = con.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT id, name FROM product");

        while (rs.next()) {

            Product product = new Product();

            product.setId(rs.getInt("id"));

            product.setName(rs.getString("name"));

            productList.add(product);

        }

        //ALWAYS close the resources

        rs.close();

        stmt.close();

        conn.close();

        return productList;

    }

}

您可以在諸如mkyong或Vogella或其他類似的教程中檢查Java Web應用程序的進一步配置(此答案中沒有太多信息)。


請注意,然后此應用程序可以演變為分層應用程序,并且JDBC代碼將進入DAO類,然后ProductRestService該類將通過此DAO類訪問數據庫。這是另一個啟動示例:


public class ProductDao {

    public List<Product> getProducts() {

        List<Product> productList = new ArrayList<>();

        Connection con = ...; //retrieve your database connection

        //the rest of the code explained above...

        return productList;

    }

}


@Path("/product")

public class ProductRestService {

    @GET

    @Path("/list")

    @Produces(MediaType.APPLICATION_JSON)

    public List<Product> getProducts() {

        ProductDao productDao = new ProductDao();

        return productDao.getProducts();

    }

}

您可以將其他更改應用于此項目,也可以進行更改。


您能說一下PHP在這里做什么嗎?(如果我使用PHP開發)


不用用Java編寫服務提供程序應用程序(如上所示),而可以用PHP進行?;蚴褂肞ython,Ruby,C#,Scala或向您提供此技術的任何其他編程語言。同樣,我不確定您正在閱讀哪種類型的教程,但這應該在某處進行解釋,并說明出于該教程的目的,您將使用PHP創建服務。如果您覺得用Java而不是PHP或任何其他語言編寫這些服務感到更舒服,那沒有問題。您的android應用并不真正在乎使用哪種技術來生產Web服務,它只會在乎使用服務以及可以使用其中的數據。


查看完整回答
反對 回復 2019-10-11
  • 3 回答
  • 0 關注
  • 1059 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號