无法创建到 MySQL 数据库服务器的 JDBC 连接

时间:2021-03-08 08:56:42

标签: java android mysql jdbc

问题是我无法使用 Android Studio 连接到我的 MySQL 数据库。我在 Netbeans 上试过,它工作得很好。它一直告诉我它无法创建到数据库服务器的连接,但凭据是正确的。

我使用的版本:

  • Android Studio:4.1.2

  • Android API:16 4.1(果冻豆)

  • MySQL 服务器:8.0.18-google

  • 连接器/J:8.0.18

      String host = "jdbc:mysql://XX.XXX.XXX.X:3306/xxx_database";
      String user = "root";
      String password = "XXXXXXXXXXXXXXXX";
    

以上是正确的,用 Netbeans 和 c# 测试过。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt = findViewById(R.id.text2);
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection conn = DriverManager.getConnection(host, user, password); <= error here
        txt.setText("Connected to database.");
    } catch (SQLException | ClassNotFoundException throwables) {
        txt.setText(throwables.getMessage());
    }

}

1 个答案:

答案 0 :(得分:0)

你一定要记得把你的JDBC连接代码放在一个AsyncTask中,否则,它不起作用。另外,不要将“INTERNET”权限误认为“使用 INTERNET”权限。您需要后者来执行 JDBC

try{  
    Class.forName("com.mysql.jdbc.Driver");  
    Connection con=DriverManager.getConnection(  
    "jdbc:mysql://localhost:3306/sonoo","root","root");  
    //here sonoo is database name, root is username and password  
    Statement stmt=con.createStatement();  
    ResultSet rs=stmt.executeQuery("select * from emp");  
    while(rs.next())  
    System.out.println(rs.getInt(1)+"  "+rs.getString(2)+"  "+rs.getString(3));  
    con.close();  
    }catch(Exception e){ System.out.println(e);}  
    }  

JDBC 在 Android 上很少使用,我当然不会推荐它。

恕我直言,JDBC 设计用于高带宽、低延迟、高度可靠的网络连接(例如,桌面到数据库服务器、Web 应用程序服务器到数据库服务器)。移动设备提供的这些很少,而且没有一个始终如一。