已关闭 。这个问题需要更加集中。它当前不接受答案。
想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。
5年前关闭。
我正在开发需要远程数据库连接的客户端服务器应用程序。
我知道网络上的教程以及越来越多的人正在使用PHP与MySQL进行交互。但是,我不太擅长PHP,以前的经验是使用Core Java,Swing和JDBC。
如果可以在Android应用程序中使用JAVA JDBC API连接远程MySQL数据库,谁能指导我?
基本上:您可以连接到MySQL(或您使用的任何服务器)服务器,但 不应 直接从Android应用程序执行此操作。
原因:
可以对Android应用程序进行反编译,并且客户端将具有访问数据库的凭据。如果使用正确的黑客工具(如Backtrack),则此恶意客户端可以访问,连接和利用数据库中的数据。
如果您的应用程序适用于世界各地的客户端,则客户端应按一个操作或一组操作打开并维护与数据库的连接。即使您的PC客户端位于数据库引擎服务器旁边的LAN中,打开物理数据库连接也要花费很多时间。现在,想象一下从世界另一端的一个国家(例如中国或日本)或从南美的一个国家(例如巴西或秘鲁)(我居住的国家)建立连接。
由于上述两个原因,即使尝试直接从您的电话设备连接到MySQL或任何其他数据库引擎,这也是一个坏主意。
如何解决这个问题呢?使用面向服务的体系结构,其中至少要有两个应用程序:
服务提供商应用程序。该应用程序将创建和发布Web服务(最好是RESTful),并可以建立使用Web服务的策略,例如用户身份验证和授权。该应用程序还将连接到数据库并对数据库执行CRUD操作。
服务使用者应用程序。这将是您的Android(或任何其他移动设备)应用程序。
从您的问题出发,您将重点放在第1点上。正如我在评论中所说,您可以使用Java创建Web应用程序,在其中创建RESTful服务,该服务归结为一个POJO(普通的旧Java对象),该POJO每个服务都有一个方法。在这种方法中,由于毕竟是纯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进行。或使用Python,Ruby,C#,Scala或向您提供此技术的任何其他编程语言。同样,我不确定您正在阅读哪种类型的教程,但这应该在某处进行解释,并说明出于该教程的目的,您将使用PHP创建服务。如果您觉得用Java而不是PHP或任何其他语言编写这些服务感到更舒服,那没有问题。您的android应用并不真正在乎使用哪种技术来生产Web服务,它只会在乎使用服务以及可以使用其中的数据。
问题内容: 我正在开发需要远程数据库连接的客户端服务器应用程序。 我知道网络上的教程以及越来越多的人正在使用PHP与MySQL进行交互。但是,我不太擅长PHP,以前的经验是使用Core Java,Swing和JDBC。 如果可以在Android应用程序中使用JAVA JDBC API连接远程MySQL数据库,谁能指导我? 问题答案: 基本上:你可以连接到MySQL(或你使用的任何服务器)服务器,但
问题内容: 你好, 我正在使用android开发我的第一个应用程序。该应用程序将必须连接到在线数据库以存储用户数据。 我正在寻找包含MySQL数据库的云存储。但是,我的App可以直接连接到该MySQL数据库并从中推入和拉出数据吗?还是我需要做其他事情? 非常感谢您的任何建议, 问题答案: 是的,你可以这么做。 您需要的材料: 网络服务器 Web服务器中存储的数据库 还有一点Android知识:)
我试着用这个代码, 也许是错误的语法? 它总是得到SQLException并且不会写入日志中的任何内容... 不知道为什么会这样? 原木 03-05 14:18:33.862 8177-8177/com示例。myapplication E/YOUR_APP_LOG_TAG:我收到一个错误java.lang.ClassNotFoundException:com.mysql.jdbc。java.lan
我在连接到公共托管的静态IP mysql服务器时遇到了一个奇怪的问题。 我能够使用MySQL Workbench成功连接到服务器,也可以通过SSH连接到本地远程服务器。但是从jdbc连接器连接到mysql服务器的尝试(通过NetBeans和本地部署的代码都失败)。在查看日志时,代码正在尝试与远程服务器连接,考虑到用户凭据是本地用户而不是远程用户的。因此用户存在于远程,但java在尝试连接时会考虑u
问题内容: 我刚刚在网络托管服务上设置了MySQL数据库,并尝试使用以下php远程连接至该数据库: 我对php和MySQL还是很陌生,我不了解几件事。我已将上面的代码保存在文件中(称为demo.html),并尝试在Web浏览器中查看它(当前它不显示任何内容)。 我的托管公司告诉我,应该使用数据库连接 我以为我需要包括IP地址(使用PhPMyAdmin登录时看到的地址),因此我也添加了该地址。但是,
我想使用maven安装JDBC连接器。 我有以下几点: mvn install:install-file -DgroupId=mysql -达蒂法特 Id=mysql-connnector-java -Dversion=5.1.6 -Dpackaging=jar -Dfile= -DgenerationPom=真 我想我所需要的就是我放在=Dfile=另一边的东西? 我也有段时间没用maven了,