2012-08-14 3 views
0

Je suis un débutant à android .J'essaie de connecter Android à mysql. mais l'application est fermée unexceptedly.please résoudre mon problème: J'ai essayé ce code pour connecter php à mysql .J'utilise textview dans le fichier de mise en page.Aussi, j'ajoute le internet permission dans mon manifest.connecter android à mysql en utilisant php

Mon code est:

public class AndroidConnectActivity extends Activity 
    { 
     private TextView outputStream; 
     public void onCreate(Bundle savedInstanceState) 
     { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_android_connect); 
     JSONArray jArray; 
     String result = null; 
     InputStream is = null; 
     StringBuilder sb = null; 
     outputStream = (TextView)findViewById(R.id.hello_world); 
     ArrayList<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>(); 
     try 
     { 

      //http post 
      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://localhost/android/index.php"); 
      httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
      if (response.getStatusLine().getStatusCode() != 200) 
      { 
       Log.d("MyApp", "Server encountered an error"); 
      } 
     } 
     catch(Exception e) 
     { 
      Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show(); 
     } 

     //Convert response to string 
     try 
     { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8")); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine() + "\n"); 
      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()); 
     } 
     //END Convert response to string 

     try 
     { 
      jArray = new JSONArray(result); 
      JSONObject json_data=null; 
      for(int i=0;i<jArray.length();i++) 
      { 
       json_data = jArray.getJSONObject(i); 
       int id=json_data.getInt("id"); 
       String name=json_data.getString("name"); 
       outputStream.append(id +"" + name + "\n"); 
      } 
     } 
     catch(JSONException e1) 
     { 
      e1.printStackTrace();   
     } 
     catch (ParseException e1) 
     { 
      e1.printStackTrace(); 
     } 
    } 
} 

<?php 
    mysql_connect("localhost","root",""); 
    mysql_select_db("android"); 
    $sql=mysql_query("SELECT * FROM table_1 Where name like 'M%' "); 
    while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 
    print(json_encode($output)); 
    mysql_close(); 
?> 
+0

Essayez de ne pas utiliser les fonctions mysql_ *, ils pourraient bientôt se dépréciée. Utilisez mysqli() à la place :) – Karma

Répondre

0

déboguer votre application à l'aide du plugin Eclipse Android. Une erreur ou une exception est nécessairement levée, vous devez savoir de quoi il s'agit.

1

Utiliser l'adresse IP au lieu de localhost dans http://localhost/android/index.php

+0

s'il vous plaît donner un exemple – dran

+0

wat est l'exception obtenir lors de l'exécution –

+0

aller à l'invite de commande et tapez ipconfig et appuyez sur Entrée puis vous obtenez une adresse comme 192.168.1.1 puis copiez cette adresse et collez au lieu localhost et exécuter l'application –

0

Il semble que vous manquez accolades autour de cette:

while($row=mysql_fetch_assoc($sql)) 
{ 
    $output[]=$row; 
    print(json_encode($output)); 
} 
+0

J'essaie cela. mais mon problème n'est pas résolu. merci Il montre l'erreur dans log_cat: Erreur dans la connexion http org.apache.http.conn.HttpHostConnectException: Connexion à http: // localhost refusé – dran

+0

Je ne suis pas familier avec android, juste vu le problème dans le code PHP, pensé que je le signalerait. – Fluffeh

0

Vous ne pouvez pas être en mesure de se connecter à votre ordinateur local de l'émulateur avec « http: // localhost/.. " Essayez plutôt" http://10.0.2.2/ .. ". Mettez également logs entre votre code et essayez de découvrir après quelle ligne vous obtenez l'erreur.

+0

Merci pour votre commentaire. Cela fonctionne très bien. HttpPost httppost = new HttpPost ("http://10.0.2.2/nom de votre dossier /index.php"); Merci beaucoup – dran

0

Enfin, j'identifie mon erreur. Ci-dessous je mentionne le code. Il fonctionne très bien.Il récupère les données de la base de données.

public class AndroidConnectActivity extends Activity 
    { 
    private TextView outputStream; 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_android_connect); 
    JSONArray jArray; 
    String result = null; 
    InputStream is = null; 
    StringBuilder sb = null; 
    outputStream = (TextView)findViewById(R.id.hello_world); 
    ArrayList<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>(); 
    try 
    { 

     //http post 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://10.0.2.2/android/index.php"); 
     httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs)); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     if (response.getStatusLine().getStatusCode() != 200) 
     { 
      Log.d("MyApp", "Server encountered an error"); 
     } 
    } 
    catch(Exception e) 
    { 
     Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show(); 
    } 

    //Convert response to string 
    try 
    { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8")); 
     sb = new StringBuilder(); 
     sb.append(reader.readLine() + "\n"); 
     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()); 
    } 
    //END Convert response to string 

    try 
    { 
     jArray = new JSONArray(result); 
     JSONObject json_data=null; 
     for(int i=0;i<jArray.length();i++) 
     { 
      json_data = jArray.getJSONObject(i); 
      outputStream.append("\n"+"Id="+json_data.getString("id") +"\t"+"Name=" +      json_data.getString("name") + "\n"); 
      result += "\n" + jArray.getJSONObject(i); 
     } 
    } 
    catch(JSONException e1) 
    { 
     e1.printStackTrace();   
    } 
    catch (ParseException e1) 
    { 
     e1.printStackTrace(); 
    } 
} 

}

Index.php 
<?php 
    mysql_connect("localhost","root",""); 
    mysql_select_db("android"); 
    $sql=mysql_query("SELECT * FROM table_1 "); 
    while($row=mysql_fetch_assoc($sql)) 
    $output[]=$row; 
    print(json_encode($output)); 
    mysql_close(); 
?> 

Avant de lancer l'application .Vous devrait commencer le localserver (xamp)

Questions connexes