【发布时间】:2014-09-22 13:44:09
【问题描述】:
我有一个 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 中完美运行,并且可以毫无问题地执行与 UPDATE SQL 请求一样多的 SELECT。 当我尝试将此请求方法调整到我的 MainActivity.java 类时,我的 android 应用程序确实正确加载了驱动程序,但无法与我的 MySQL 服务器通信并返回错误。
如果我在前面的代码中输入本地 IP 地址到我的服务器并将我的 android 手机连接到 Wi-Fi,那么我的应用程序会返回我:
"通信链路故障。最后一个数据包成功发送到 服务器是 0 毫秒前。驱动程序没有收到任何数据包 来自服务器。”
但是,如果我尝试在之前的代码中向我的服务器输入一个外部 IP 地址(不要担心 MySQL 端口对互联网开放并且我的服务器正在侦听任何 IP),请使用我的 android 手机通过LTE 互联网连接,我收到另一个错误:
“无法创建与数据库服务器的连接”
到目前为止,我的研究都没有帮助我。有谁知道我的问题可能来自哪里? 在此先感谢:)
【问题讨论】: