我们可以使用JDBC在Android中连接远程MySQL数据库吗?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

我们可以使用JDBC在Android中连接远程MySQL数据库吗?

2020-05-11 16:00:53 209 1

我正在开发需要远程数据库连接的客户端服务器应用程序。

我知道网络上的教程以及越来越多的人正在使用PHP与MySQL进行交互。但是,我不太擅长PHP,以前的经验是使用Core Java,Swing和JDBC。

如果可以在Android应用程序中使用JAVA JDBC API连接远程MySQL数据库,谁能指导我?

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-05-11 16:01:14

    基本上:您可以连接到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 getProducts() { List 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 getProducts() { ProductDao productDao = new ProductDao(); return productDao.getProducts(); } } 您可以将其他更改应用于此项目,也可以进行更改。

    您能说一下PHP在这里做什么吗?(如果我使用PHP开发)

    不用用Java编写服务提供程序应用程序(如上所示),而可以用PHP进行。或使用Python,Ruby,C#,Scala或向您提供此技术的任何其他编程语言。同样,我不确定您正在阅读哪种类型的教程,但这应该在某处进行解释,并说明出于该教程的目的,您将使用PHP创建服务。如果您觉得用Java而不是PHP或任何其他语言编写这些服务感到更舒服,那没有问题。您的android应用并不真正在乎使用哪种技术来生产Web服务,它只会在乎使用服务以及可以使用其中的数据。来源:stack overflow

    0 0
相关问答

17

回答

【大咖问答】对话PostgreSQL 中国社区发起人之一,阿里云数据库高级专家 德哥

阿里ACE 彭飞 2019-07-10 09:36:10 1035232浏览量 回答数 17

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226092浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157660浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 336975浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295475浏览量 回答数 110

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646730浏览量 回答数 18

38

回答

安全组详解,新手必看教程

我的中国 2017-11-30 15:23:46 259803浏览量 回答数 38

21

回答

请教一下数据量有100万条左右要什么配置?

易网网络 2013-03-27 15:18:02 192630浏览量 回答数 21

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 305590浏览量 回答数 249

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204370浏览量 回答数 2
66
文章
12595
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载