0

ローカル データベースからデータを取得する Android アプリをコーディングしました。クエリを作成するためのphpファイルと、クエリをdbに送信するためのクラスを作成しました。

これがphpファイルです:

<?php
    $db_host = "10.0.2.2";
    $db_name = " name";
    $db_user = " usr";
    $db_password = " pwd";

    //connessione al database
    $db = mysql_connect($db_host, $db_user, $db_password);

    if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file onnection.php");

    mysql_select_db($db_name, $db)
        or die ("Errore nella selezione del database. Verificare i parametri nel file onnection.php");

    //preleviamo la query passataci dall’applicazione
    $query = $_REQUEST['querySend'];

    //eseguiamo la query
    $result = mysql_query ($query);
    while($e=mysql_fetch_assoc($result))
    $output[]=$e;

    //stampiamo il risultato in formato json
    print(json_encode($output));
    ?>

そしてクエリを送信する私のクラス:

String result = "0";
InputStream is = null;

      //the query to send
      ArrayList<NameValuePair> querySend = new ArrayList<NameValuePair>();

      querySend.add(new BasicNameValuePair("querySend",query));

      //http post
      try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://10.0.2.2/query.php");
        httppost.setEntity(new UrlEncodedFormEntity(querySend));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
      }catch(Exception e){
        Log.e("log_tag", "Error in http connection "+e.toString());
      }

  //convert response to string
      try{
        BufferedReader reader = new BufferedReader(
                   new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = null;
          while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
          }
        is.close();
        result=sb.toString();

      }catch(Exception e){
        Log.e("log_tag", "Error converting result: "+e.toString());
      }

      return result;

400 エラーが発生します。助言がありますか?

4

1 に答える 1

0

データベースがローカル マシン上にある場合は、代わりにそのローカル アドレスを使用してみてください。Android デバイスを同じネットワークに接続し、IP アドレスを変更します。ループバック (10.0.2.2) を使用して接続の問題が発生しました。

ローカル マシンでもポートを開く必要がある場合があります (mysql のデフォルト ポートは 3306 です)。

うまくいく可能性のある他の提案については、ここで受け入れられた回答を確認してください。

Android エミュレーターをローカルの mysql データベースに接続する方法

于 2012-09-08T14:12:07.423 に答える