2016-05-13 13 views
-1

MySQLを使用してデータベースに接続するAndroidアプリを作成します。 localhost 10.0.2.2:3306との接続をテストするとデータベースを取得できますが、実際のホストを使用してサーバーからデータベースを取得すると、何も取得できません。私のホストはhttps://192.168.1.xxx:xxxxxで、データベース名はです。です。私の問題は何ですか?私を助けてください。ありがとうございました。 これは私のコードです:一般的にMySQLは、唯一のローカルホストからそれにアクセスすることが可能であるので、セキュリティ上の制限と一緒にインストールされてJDBC MySQLを使用してAndroidでデータベースに接続しますか?

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); 
    } 

} 
+0

JDBCは、高帯域幅、低遅延、高信頼性のネットワーク接続(デスクトップからデータベースサーバー、Webアプリケーションサーバーからデータベースサーバーなど)用に設計されています。モバイルデバイスはこれらの機能をほとんど提供しておらず、一貫していません。 – ELITE

+0

データベースの周りにWebサービスを作成し、それをAndroidからアクセスします。 – ELITE

+0

[does-android-support-jdbc](http://stackoverflow.com/questions/1728476/does-android-support-jdbc) – ELITE

答えて

1

。あなたは、それは可能性がハッキングされるように開きますので、任意のIPからMySQLへのアクセスを提供するために悪い習慣であることを他のIPからのアクセスを許可するには、以下の

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

ノートのようなコマンドを実行する必要が

。したがって、一般的には、アンドロイドアプリケーションからのリクエストをインターセプトし、直接データベースを呼び出すサーバーを配置することをお勧めします。


注:アプリケーションとmysqlサーバの間のルートが開いているかどうかを確認してください。

3Gを使用している場合、ローカルネットワークを使用しておらず、MySqlサーバーのIPは192.168.1.xxx(つまりローカルネットワークのIP)とは異なります。また、ローカルネットワークの外部でMySql Serverが表示されない可能性もあります。それはネットワークの構成によって異なります。

ポートを公開してmysqlにアクセスし、インターネットから見たローカルネットワークのIPアドレスを確認する必要があります。それ以外の場合は、ローカルネットワークにワイヤレス接続された電話機を使用してローカルネットワークにアクセスできます。

+0

あなたの答えをありがとう。私はすでにVPNを開いてTunnelblickを使用しています。私はブラウザからデータベースに接続できますが、なぜAndroid Studioでそれを行うことはできません。 –

+0

同じネットワークに接続していますか? –

+0

はい、私はただ1つのIPアドレスでそれを接続します。 –

関連する問題