【问题标题】:Could not create JDBC connection to MySQL database server无法创建到 MySQL 数据库服务器的 JDBC 连接
【发布时间】:2021-06-06 03:45:03
【问题描述】:

问题是我无法使用 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());
    }

}

【问题讨论】:

标签: java android mysql jdbc


【解决方案1】:

你必须记得把你的 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 应用程序服务器到数据库服务器)。移动设备提供的这些功能很少,而且没有一个始终如一。

【讨论】:

    猜你喜欢
    • 2021-07-21
    • 2017-05-29
    • 2014-03-06
    • 2020-10-24
    • 2022-01-13
    • 1970-01-01
    • 2014-12-09
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多