Connexion MySQL à une application Android
Bonjour,
Je suis en plein apprentissage dans la conception d'applications Android et après avoir suivi quelques tutoriels, je cherche à récuperer des données dans mon application, via une base de données MySQL. Pour cela, j'ai suivi le tutoriel : http://blog.erlem.fr/fr/applications...de-de-php.html
J'ai un peu modifié mon code pour avoir une classe de connexion et pour ne pas que ce soit dans le main, et je me retrouve avec ces erreurs :
Citation:
11-23 11:03:35.039: E/log_tag(591): Error in http connection android.os.NetworkOnMainThreadException
11-23 11:03:35.039: E/log_tag(591): Error converting result java.lang.NullPointerException
11-23 11:03:35.039: E/log_tag(591): Error parsing data org.json.JSONException: End of input at character 0 of
11-23 11:03:35.200: D/gralloc_goldfish(591): Emulator without GPU emulation detected.
Dans mon main j'ai l'instanciation et l'appel de la méthode :
Code:
1 2 3 4 5 6
| public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MaBDD connect = new MaBDD();
connect.traitement();
} |
Dans ma Classe MaBDD j'ai un constructeur vide et la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public void MaBDD()
{}
public String traitement()
{
String returnString = strURL;
InputStream is = null;
String result = "";
// Envoyer la requête au script PHP.
// Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
// $_REQUEST['ville'] sera remplacé par L dans notre exemple.
// Ce qui veut dire que la requête enverra les villes commençant par la lettre L
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("ville","L"));
// Envoie de la commande http
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(strURL);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
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());
}
// Convertion de la requête en 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 les données JSON
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
// Affichage ID_ville et Nom_ville dans le LogCat
Log.i("log_tag","ID_ville: "+json_data.getInt("ID_ville")+
", Nom_ville: "+json_data.getString("Nom_ville")
);
// Résultats de la requête
returnString += "\n\t" + jArray.getJSONObject(i);
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data " + e.toString());
}
return returnString;
} |
Dans l'idée la fonction traitement renvoie un String contenant les résultats de la BDD pour pouvoir les afficher dans le main.
Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?
Merci d'avance pour votre aide.