Partage
  • Partager sur Facebook
  • Partager sur Twitter

Android connexion bdd mysql

    25 novembre 2014 à 5:50:43

    Bonjour à tous,

    je m'arrache les cheveux depuis 2 jours pour essayer de comprendre et faire marcher du code pour me connecter a une bdd mysql.

    Est ce que quelqu'un peut m'expliquer ce qui ne va pas ?

    package com.example.testconnexion;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import android.support.v7.app.ActionBarActivity;
    import android.app.Activity;
    import android.content.Entity;
    import android.net.ParseException;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.ArrayAdapter;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    	TextView txt;
    	  //JSON Node Names
    	  private static final String TAG_USER = "";
    	  private static final String TAG_ID = "id";
    	  private static final String TAG_NAME = "nom";
    	  private static final String TAG_EMAIL = "email";
    	  JSONArray user = null;
    	public static final String url = "http://192.168.0.118/connexion.php";
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            txt = (TextView)findViewById(R.id.t1);
            new JSONParse().execute(url);
        }
        private class JSONParse extends AsyncTask<String, String, JSONObject> {
    
           @Override
             protected void onPreExecute() {
                 super.onPreExecute();
            txt = (TextView)findViewById(R.id.t1);
    
           }
           @Override
             protected JSONObject doInBackground(String... args) {
             JSONParser jParser = new JSONParser();
             // Getting JSON from URL
             JSONObject json = jParser.getJSONFromUrl(url);
             return json;
           }
            @Override
              protected void onPostExecute(JSONObject json) {
              
              try {
                 // Getting JSON Array
                 user = json.getJSONArray(TAG_USER);
                 JSONObject c = user.getJSONObject(0);
                 // Storing  JSON item in a Variable
                 //String id = c.getString(TAG_ID);
                 String name = c.getString(TAG_NAME);
                 //String email = c.getString(TAG_EMAIL);
                 //Set JSON Data in TextView
                 //uid.setText(id);
                 txt.setText(name);
             } catch (JSONException e) {
               e.printStackTrace();
             }
            }
        }
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    		// Handle action bar item clicks here. The action bar will
    		// automatically handle clicks on the Home/Up button, so long
    		// as you specify a parent activity in AndroidManifest.xml.
    		int id = item.getItemId();
    		if (id == R.id.action_settings) {
    			return true;
    		}
    		return super.onOptionsItemSelected(item);
    	}
    }
    
    package com.example.testconnexion;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.util.Log;
    public class JSONParser {
      static InputStream is = null;
      static JSONObject jObj = null;
      static String json = "";
      // constructor
      public JSONParser() {
      }
      public JSONObject getJSONFromUrl(String url) {
        // Making HTTP request
        try {
          // defaultHttpClient
          DefaultHttpClient httpClient = new DefaultHttpClient();
          HttpPost httpPost = new HttpPost(url);
          HttpResponse httpResponse = httpClient.execute(httpPost);
          HttpEntity httpEntity = httpResponse.getEntity();
          is = httpEntity.getContent();
        } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
        } catch (ClientProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
        try {
          BufferedReader reader = new BufferedReader(new InputStreamReader(
              is, "utf-8"), 8);
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null) {
            sb.append(line + "n");
          }
          is.close();
          json = sb.toString();
        } catch (Exception e) {
          Log.e("Buffer Error", "Error converting result " + e.toString());
        }
        // try parse the string to a JSON object
        try {
          jObj = new JSONObject(json);
        } catch (JSONException e) {
          Log.e("JSON Parser", "Error parsing data " + e.toString());
        }
        // return JSON String
        return jObj;
      }
    }
    <?php
    $user = 'root';
    $password = '****';
    
      try
      {
    	$bdd = new PDO('mysql:host=localhost;dbname=projetPoo', $user, $password);
      }
      catch (Exception $e)
      {
    	die('Erreur : ' . $e->getMessage());
      }
      echo "toto";
      $requete = $bdd->query('SELECT * FROM Utilisateur');
      $donnees = $requete->fetch();
      $output[] = $donnees;
      
      var_dump($output);
      print(json_encode($output))
    ?> 

     Les erreurs:

    11-24 23:41:25.417: I/art(7093): Late-enabling -Xcheck:jni
    11-24 23:41:25.523: D/OpenGLRenderer(7093): Render dirty regions requested: true
    11-24 23:41:25.529: D/Atlas(7093): Validating map...
    11-24 23:41:25.816: E/JSON Parser(7093): Error parsing data org.json.JSONException: Value totoarray(1) of type java.lang.String cannot be converted to JSONObject
    11-24 23:41:26.139: I/OpenGLRenderer(7093): Initialized EGL, version 1.4
    11-24 23:41:26.398: D/OpenGLRenderer(7093): Enabling debug mode 0
    11-24 23:41:26.411: I/Choreographer(7093): Skipped 49 frames!  The application may be doing too much work on its main thread.
    11-24 23:41:26.513: D/AndroidRuntime(7093): Shutting down VM
    11-24 23:41:26.513: D/AndroidRuntime(7093): --------- beginning of crash
    11-24 23:41:26.517: E/AndroidRuntime(7093): FATAL EXCEPTION: main
    11-24 23:41:26.517: E/AndroidRuntime(7093): Process: com.example.testconnexion, PID: 7093
    11-24 23:41:26.517: E/AndroidRuntime(7093): java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at com.example.testconnexion.MainActivity$JSONParse.onPostExecute(MainActivity.java:69)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at com.example.testconnexion.MainActivity$JSONParse.onPostExecute(MainActivity.java:1)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.os.AsyncTask.finish(AsyncTask.java:632)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.os.AsyncTask.access$600(AsyncTask.java:177)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.os.Handler.dispatchMessage(Handler.java:102)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.os.Looper.loop(Looper.java:135)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at android.app.ActivityThread.main(ActivityThread.java:5221)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at java.lang.reflect.Method.invoke(Native Method)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at java.lang.reflect.Method.invoke(Method.java:372)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    11-24 23:41:26.517: E/AndroidRuntime(7093): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
    11-24 23:41:29.368: I/Process(7093): Sending signal. PID: 7093 SIG: 9



    Merci d'avance :)



    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2014 à 11:47:13

      Salut,

      Ta ligne qui plante, 69 dans MainActivity, qu'est-ce que tu veux faire exactement ?

      Je comprends pas l'intérêt de demander le JSON array de ""...

      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2014 à 14:06:57

        Salut, merci de ta réponse.

        Ca c'est parceque je cherchais le nom du tableau a mettre (car j'ai repris un exemple) et comme au bout d'un moment je ne savait plus du tout j'ai essayé de le mettre vide vue que je ne trouve pas. Quelques soit le nom c'est cette ligne qui plante

        Mon inputStream est tout le temps vide, j'oublie quelques choses ?

        -
        Edité par alex8276 25 novembre 2014 à 14:42:31

        • Partager sur Facebook
        • Partager sur Twitter

        Android connexion bdd mysql

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown