Aller au contenu

Connecter android la base de donnée MySQL


abdallah123

Recommended Posts

bonjour,

j'ai utiliser ce tutoriel pour lier android a mysql:

http://www.helloandr...-mysql-database

la connexion entre php et mysql fonctionne mais lorsque j'ai mis le code dans android ca n'a pas marche et c'est comme si je n'ai rien ecrit j'ai rien recu ni des message d'erreur ni rien et meme j'ai essaye d'ecrire le resultat dans un edittext mais ca n'a rien rendu alors que peut etre le probleme?

c'est comme ci j'ai rien ecrit comme code, j'ai eut aucun resultat..

et puisque easyphp contient des base de donnee sqlite alors comment connecter android a une base de donnee sqlite dans mysql et comment faire push a une base de donnee a distance.

j'ai vraiment besoin d'aide...........

merci.

Modifié par abdallah123
Lien vers le commentaire
Partager sur d’autres sites

Première étape: vérifier que le code PHP retourne bien un résultat. As-tu essayé de l'appeler depuis un navigateur ? As-tu bien un résultat qui s'affiche dans le navigateur ?

Si cela fonctionne, ensuite, tu peux tester ton appli Android. Si une erreur se produit, tu auras forcément un message d'erreur dans le LogCat. A toi de nous dire ensuite lequel

Lien vers le commentaire
Partager sur d’autres sites


  • String result = "";

  • //the year data to send

  • ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();

  • nameValuePairs.add(new BasicNameValuePair("year","1980"));

  • //http post

  • try{

  • HttpClient httpclient = new DefaultHttpClient();

  • HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");

  • httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

  • HttpResponse response = httpclient.execute(httppost);

  • HttpEntity entity = response.getEntity();

  • InputStream 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(newInputStreamReader(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());

  • }

  • //parse json data

  • try{

  • JSONArray jArray = new JSONArray(result);

  • for(int i=0;i<jArray.length();i++){

  • JSONObject json_data = jArray.getJSONObject(i);

  • Log.i("log_tag","id: "+json_data.getInt("id")+

  • ", name: "+json_data.getString("name")+

  • ", sex: "+json_data.getInt("sex")+

  • ", birthyear: "+json_data.getInt("birthyear")

  • );

  • }

  • }

  • }catch(JSONException e){

  • Log.e("log_tag", "Error parsing data "+e.toString());

  • }

merci pour l'aide

ok alors excusez-moi j'ai cru que le log c'est la console comme en c# alors j'ai vu que non mais j'ai vu le log et j'ai vu des erreurs mais je les effacer pour retester le projet apres avoir demarrer easyphp alors j'ai plus eut un log message le log est vide comment je peux revoire mon log?

Modifié par abdallah123
Lien vers le commentaire
Partager sur d’autres sites

String result = "";
//the year data to send
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1980"));

//http post
try{
	HttpClient httpclient = new DefaultHttpClient();
	HttpPost httppost = new HttpPost("http://example.com/getAllPeopleBornAfter.php");
	httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
	HttpResponse response = httpclient.execute(httppost);
	HttpEntity entity = response.getEntity();
	InputStream 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());
}

//parse json data
try{
	JSONArray jArray = new JSONArray(result);
	for(int i=0;i<jArray.length();i++){
			JSONObject json_data = jArray.getJSONObject(i);
			Log.i("log_tag","id: "+json_data.getInt("id")+
					", name: "+json_data.getString("name")+
					", sex: "+json_data.getInt("sex")+
					", birthyear: "+json_data.getInt("birthyear")
			);
	}
}
}catch(JSONException e){
	Log.e("log_tag", "Error parsing data "+e.toString());
}

merci bien, pour l'aide mais encore une question:

ok alors excusez-moi j'ai cru que le log c'est la console comme en c# alors j'ai vu que non mais j'ai vu le log et j'ai vu des erreurs mais je les effacer pour retester le projet apres avoir demarrer easyphp alors j'ai plus eut un log message le log est vide comment je peux revoire mon log?

et ou se trouve le log c'est dans log error et si j'ecris log.i(); alors ou je dois avoir la reponse?

Modifié par abdallah123
Lien vers le commentaire
Partager sur d’autres sites

Il suffit de relancer l'application pour avoir de nouveau les messages qui s'affichent

Si, par contre, tu as fermé la fenêtre LogCat, il suffit de la réouvrir; dans Eclipse, menu Window/Show view/Logcat (ou Other.../Android/Locgat si Logcat n'apparait pas directement dans le menu)

Lien vers le commentaire
Partager sur d’autres sites

ok merci alors c'est la je ne savais pas je regardais la console et l'error log alors je vais tester a nouveau et regarder le log cat :) merci

j'ai eut comme reponse:

error in http connection java.net.socketexception permission denied

error in converting result...

alors la connection n'a pas marche mais pourquoi?

Lien vers le commentaire
Partager sur d’autres sites

parce que tu n'as pas ajouté la permission d'accès Internet à ton application

A ajouter dans le AndroidManifest.xml de ton projet, onglet Permissions, bouton Add/Uses Permission, choisir android.permission.INTERNET

Lien vers le commentaire
Partager sur d’autres sites

alors l'erreur c'etait car j'ai pas mis la permission de l'utilisation de l'iinternet alors maintenant j'ai eut connection a 127.0.0.1 refused je vais voir pourquoi!!

j'ai eut error in http connection org.apache.http.HttpHostConnectException: connection to http://127.0.0.1 refused

alors je crois que ca a marche j'ai remplace 127.0.0.1 par exemple .com mais j'ai eut une erreur de parse de json :P:

error parsing data org.json.jsonException value<!Doctype of type java.lang.string cannot be converted to jsonarray

Lien vers le commentaire
Partager sur d’autres sites

127.0.0.1 correspond à l'adresse locale de ton smartphone, c'est à dire que tu essayes d'accéder à un serveur http qui serait présent sur ton appareil Android, ce qui ne doit pas être ce que tu souhaites faire

Si tu utilises l'émulateur, et que tu souhaites accéder à un serveur http qui serait présent sur ton poste de dev, alors, il faut que tu utilises l'adresse spéciale 10.0.2.2 (cf doc de l'émulateur)

Lien vers le commentaire
Partager sur d’autres sites

non je ne te dis pas que tu n'as pas vu que mon code est pour json!!!

mais je te demande si tu as vu d'autre chose peut etre y'avais d'xml et j'ai pas vu c'est ca :)

oui moi j'ai vu doctype avec xml mais la je ne sais pas comment il y'a cette erreur..

et j'ai vu cette solution

I would get rid of this line:
JSONArray jArray = new JSONArray(result);
and do this instead:
JSONObject json_data = new JSONObject(result);
JSONArray nameArray = json_data.names();
JSONArray valArray = json.toJSONArray(nameArray);

mais ca na pas marche maintenant ils me disent que tu ne peut pas transformer string a jsonobject c'est de

JSONArray jArray = new JSONArray(result);

car la on est en train de transformer result qui est declare comme string en jsonobject.

mais je ne sais pas comment la fixer..

Modifié par abdallah123
Lien vers le commentaire
Partager sur d’autres sites

Le problème est de savoir quel est le contenu que tu reçois de ton serveur, afin d'être sûr que c'est bien du JSON; l'erreur que tu indiquais ("error parsing data org.json.jsonException value<!Doctype of type java.lang.string cannot be converted to jsonarray") semble dire que ce n'est pas le cas, et tu auras beau essayer d'instancier un JSONObjet ou un JSONArray, ça ne fonctionnera pas si ce n'est pas à la base du JSON

Peux-tu afficher dans les logs le contenu que tu reçois (un Log.d("log_tag", "resultat reçu : " + result); avant le parsing JSON ?

Lien vers le commentaire
Partager sur d’autres sites

ok je vais essayer et puis je t'afficherai le resultat

j'ai recu un code html :P c'est pour ca que j'ai eut un erreur doctype :P

alors c'est quoi la solution j'ai eut mal a la tete !! :P

mais peut etre que c'est normal? on la trasforme en html pour l'envoyer entre les 2 logiciels? ou non!!

car dans le navigateur j'ai eut le resultat sous forme de json

Lien vers le commentaire
Partager sur d’autres sites

Si tu avais bien du json dans le navigateur, mais que tu as du html dans ton appli, c'est que tu ne dois pas appeler de la même façon le serveur...

As-tu affiché dans le log le résultat de la requête http ? quel est-t'il ? est-ce du json encapsulé dans du html ? ou ... ?

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

ah ok je veux essayer

oui ca a marche j'ai mis 10.0.2.2 au lieu de 127.0.0.1 :D

ah finalement je peux manger merci bcpppppppppppp

mais j'ai pas compris pourquoi c'est 10.0.2.2 mais mois j'appele ma machine avec 127.0.0.1

chpil merci bcp

j'ai trouve ca :10.0.2.2 Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)

alors merci :)

Modifié par abdallah123
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...