簡體   English   中英

在Android中使用JDBC MySQL連接數據庫?

[英]Using JDBC MySQL to connect database in Android?

我創建了一個 Android 應用程序來使用 MySQL 連接數據庫。 當我測試與localhost 10.0.2.2:3306的連接時,我可以獲取數據庫,但是當我使用真實主機從我的服務器獲取數據庫時,我什么也得不到。 我的主機是: https://192.168.1.xxx:xxxxx ,我的數據庫名稱是test 我的問題是什么? 請幫我。 謝謝你。 這是我的代碼:

private class MyTask extends AsyncTask<Void, Void, Void> {

    private String idFromServer;
    private String url="jdbc:mysql://192.168.1.xxx:xxxxx/test";
    String name = "AAA";

    @Override
    protected Void doInBackground(Void... params) {
        try {
            ResultSet result = null;
            String a = "SELECT * FROM testtable";
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection(url,"aaa","abcdef");
            Statement state = con.createStatement();
            result = state.executeQuery(a);
            while (result.next()) {
                if (name.equals(result.getString("name"))) {
                    idFromServer = result.getString("id");
                }
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }

    protected void onPostExecute(Void result) {
        id.setText(idFromServer);
        super.onPostExecute(result);
    }

}

通常 MySql 安裝有安全限制,因此只能從本地主機訪問它。

需要執行類似下面的命令,允許其他ip訪問

GRANT ALL PRIVILEGES
ON database.*
TO 'youruser'@'%'
IDENTIFIED BY 'yourpassword';

請注意,從任何 IP 提供對 MySql 的訪問是一種不好的做法,因為它可能會被黑客入侵。 所以一般來說,最好放置一個服務器來攔截來自你的 android 應用程序的請求並直接調用數據庫。


注意:還要檢查它是否打開了您的應用程序和 mysql 服務器之間的路由。

如果你使用3G,你就不是在使用本地網絡,並且MySql服務器的IP與192.168.1.xxx不同(即本地網絡的IP)。 也有可能在本地網絡之外 MySql Server 不可見。 這取決於您的網絡配置。

您需要“打開”您的網絡,公開端口以訪問 mysql 並檢查從 Internet 上看到的本地網絡的 ip。 否則,您可以使用無線連接到本地網絡的電話訪問本地網絡。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM