java如何使MySQL Connector/J在安卓上工作?
我有一个MySQL服务器在本地Linux机器上运行。通过一个简单的Java程序(在eclipse内部运行)使用MySQL Connector/J与它通信并执行SQL语句,我没有遇到任何问题。 下面是我的简单Java程序:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.lang.*;
public class main{
private static void request(){
String url = "jdbc:mysql://myadress:3306/mydatabase";
String user = "user";
String passwd = "passwd";
Connection conn = null;
try{
/* Initializing the connection */
conn = DriverManager.getConnection(url, user, passwd);
Statement statement = conn.createStatement();
ResultSet resultset = statement.executeQuery(/* MY SQL reqquest */);
while(resultset.next()){
System.out.println(resultset.getString(/* THE COLUMN AND ROW I WANTED IN MY REQUEST */));
}
}catch(SQLException e){
System.out.println("SQL connection error: " + e.getMessage());
}finally {
if(conn != null){
try{
/* CLosing connection */
conn.close();
}catch (SQLException e){
System.out.println("Error while closing the connection: " + e.getMessage());
}
}
}
}
public static void main(String[] args) {
try{ // Loading the MySQL Connector/J driver
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
System.out.println("Error while loading the Driver: " + e.getMessage());
}
request();
}
}
这段代码在eclipse中工作得非常好,可以执行任意多个SELECT和UPDATE SQL请求,而不会出现任何问题。 当我试图使这个请求方法适应我的主要活动时。java类,我的安卓应用程序确实正确加载了驱动程序,但无法与MySQL服务器通信,并返回一个错误
如果我在前面的代码中输入服务器的本地IP地址,并将我的安卓手机连接到Wi-Fi,那么我的应用程序会返回我:
"Communication link failure. The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server."
但是,如果我试图在前面的代码中输入服务器的外部IP地址(不要担心MySQL端口对互联网开放,我的服务器正在监听任何IP),通过LTE互联网连接使用我的安卓手机,我会遇到另一个错误:
"Could not create connection to database server"
到目前为止,我的研究都没有帮到我。有人知道我的问题来自哪里吗? 提前感谢:)
# 1 楼答案
通常,推荐的方法是发布到web服务,并允许web服务在数据库上执行所需的操作。然而,GitHub上有一个开源库,它允许您直接连接到数据库服务器,而无需web服务
该库相当新,已经针对MySQL 5.1进行了测试->;5.7还应与MariaDB的等效MySQL版本兼容
免责声明:是我写的
# 2 楼答案
正在转向Android世界的Java开发人员普遍存在的误解是,为旧的优秀Java创建的一切都可以在Android上使用。由于Android对Java的使用违反了主要的Java原则,“写一次,到处运行”,这根本不是真的。我见过有人试图在Android上使用常见的Apache JAR,这导致了奇怪的错误(见Can't import Apache HTTP in Eclipse)
同样的问题似乎也适用于Java JDBC驱动程序和API,例如,请参见此处的答案:Connecting to MySQL from Android with JDBC
常见的建议是:每次尝试在Android上使用第三方JAR时,请检查它是否与后者兼容,或者是否有特定于Android的端口
# 3 楼答案
如果使用正确的接头,这是可能的。 我使用连接器3.0.17,在其他一些示例中,连接器是mysql-connector-java-5.1.24-bin。罐子
导入java。sql
使用下一种方法进行连接
它非常适合我,我没有遇到任何问题