Bonjour,

Je réalise une application Android qui va récupérer le contenu d'un fichier XML sur un serveur et qui insère les données de la base. Mon problème est que je n'arrive pas à ajouter les données dans la base. Sa fait un mois que je suis dessus et je bloque vraiment. en plus sa devient urgent.
Voici mes script:
package http:
LitFichier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public class LitFichier extends AsyncTask<String, Void, Boolean>{
 
	private List<Livraison> lesLivraisons;
 
	@Override
	protected Boolean doInBackground(String... urls) {
		URL url;
		try {
			url = new URL(urls[0]);
			MaSaxHandler handler = new MaSaxHandler();
			InputStream inputStream;
			inputStream = url.openConnection().getInputStream();
 
			handler.parse(inputStream);
	        lesLivraisons = handler.getLesLivraisons();
 
	        return true;
		} catch (MalformedURLException e) {
			return false;
		} catch (IOException e) {
			return false;
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
 
	public List<String> donneLivraisons(){
		List<String> liste = new ArrayList<String>();
		for (Livraison livraison : lesLivraisons)
			liste.add(livraison.toString());
		return liste;
	}
}
package xml:
classe MaSaxHandler:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public class MaSaxHandler extends DefaultHandler {
 
	   private Livraison livraison;
	   private List<Livraison> lesLivraisons = new ArrayList<Livraison>();
	   private Colis colis;
	   private String valeur;
 
	   public void parse(InputStream is) throws ParserConfigurationException, SAXException, IOException{
		   SAXParserFactory factory = SAXParserFactory.newInstance();
		   SAXParser parser=factory.newSAXParser();
		   parser.parse(is,this);
	   }
	   public void startElement( String uri, String localName, String qName, Attributes attributes)
			   throws SAXException {
		   if (localName.equals("livraison"))  livraison = new Livraison();
		   if (localName.equals("colis")) colis = new Colis();
	   }
	   public void characters(char[] ch,int start, int length) throws SAXException{
			valeur = new String(ch,start,length);
		}
	   public void endElement( String uri, String localName,String qName) throws SAXException {
	        if (localName.equals("livraison")) {
	        	lesLivraisons.add(livraison);
	        }else if (localName.equals("client")){
	        	livraison.setClient(valeur);
	        }else if (localName.equals("adresse")){
	        	livraison.setAdresse(valeur);
	        }else if (localName.equals("colis")){
	        	livraison.addColis(colis);
	        }else if (localName.equals("ref")){
	        	colis.setRef(valeur);
	        }else if (localName.equals("montant")){
	        	double monLong= Double.parseDouble(valeur);
	        	colis.setMontant(monLong);
	        }
	    }
	   public List<Livraison> getLesLivraisons() {
		   return lesLivraisons;
	   }
}
pakcage métier:
Classe GestionBD:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class GestionBD {
	private SQLiteDatabase maBase;
	private BdHelper monBdHelper;
 
	public GestionBD(Context context) {
 
		monBdHelper = new BdHelper(context, "baseLivraison", null, 1);
	}
 
	public void init(){
		open();
 
		MaSaxHandler mesLivraisons = new MaSaxHandler();
 
		for (Livraison l : mesLivraisons.getLesLivraisons()){
            Livraison livraisonACreer = new Livraison(); 
            livraisonACreer.setClient(l.getClient());
            livraisonACreer.setAdresse(l.getAdresse());
            long id;
            id = ajouteLivraison(livraisonACreer);
 
            List<Colis> listeColis = l.getLesColis();
            for (Colis c : listeColis){
               Colis colisACreer = new Colis();
               colisACreer.setId(id);
               colisACreer.setRef(c.getRef());
               colisACreer.setMontant(c.getMontant());
               ajouteColis(colisACreer); 
             }
 
      }
 
 
	}
	public void open(){
		maBase = monBdHelper.getWritableDatabase();
	}
	public void close(){
		maBase.close();
	}
	public long ajouteLivraison(Livraison livraison){
		ContentValues v = new ContentValues();
		v.put("client", livraison.getClient());
		v.put("adresse", livraison.getAdresse());
		return maBase.insert("livraison", null, v);
	}
	public void ajouteColis(Colis colis){
		ContentValues v = new ContentValues();
		v.put("idlivraison", colis.getIdLivraison());
		v.put("ref", colis.getRef());
		v.put("montant", colis.getMontant());
		maBase.insert("colis", null, v);
	}
 
 
	public void supprimeLivraisons(){
		maBase.delete("livraison", null, null);
	}
 
	public void supprimeColis(){
		maBase.delete("colis", null, null);
	}
 
	public ArrayList<String> donneLivraisons(){
		ArrayList<String> liste = new ArrayList<String>();
		Cursor c = maBase.rawQuery("select id, client, adresse from livraison order by client",null);
		while (c.moveToNext())
			liste.add( c.getString(0)+" "+c.getString(1)+" "+c.getString(2));
		return liste;
	}
	public ArrayList<String> donneColis(){
		ArrayList<String> liste = new ArrayList<String>();
		Cursor c = maBase.rawQuery("select client, sum(montant) as montant from livraison" +
				" left outer join colis on id=idlivraison group by id order by client",null);
		while (c.moveToNext()) liste.add(c.getString(0)+" "+c.getDouble(1));
		return liste;
	}
}
classe BDHelper:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class BdHelper extends SQLiteOpenHelper {
 
	public BdHelper(Context context, String name, CursorFactory factory,
			int version) {
		super(context, name, factory, version);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		String req = "create table livraison(id integer primary key autoincrement, client text, adresse text)";
		db.execSQL(req);
		req = "create table colis(ref text, montant real, idlivraison integer, foreign key (idlivraison) references livraison(id))";
		db.execSQL(req);
	}
 
 
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
	}
}
classe Livraison:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
public class Livraison {
 
	private String client;
	private String adresse;
	private List<Colis> lesColis;
 
	public Livraison(String client, String adresse) {
		this.client = client;
		this.adresse = adresse;
	}
 
	public Livraison(){
		super();
		lesColis = new ArrayList<Colis>();
	}
 
	public String getClient(){
		return client;
	}
 
	public String getAdresse(){
		return adresse;
	}
 
	public List<Colis> getLesColis(){
		return lesColis;
	}
 
	public void setLesColis(List<Colis> lesColis){
		this.lesColis = lesColis;
	}
 
	public void setClient(String client) {
		this.client = client;
	}
 
	public void setAdresse(String adresse) {
		this.adresse = adresse;
	}
 
	public void addColis(Colis unColis){
		lesColis.add(unColis);
	}
 
	public String toString(){
		String chaine = "Livraison : client : "+client+" => adresse : "+adresse+" \nLes colis :";
		for (Colis unColis : lesColis){
			chaine = chaine + "\n"+unColis.toString();		
		}
		return chaine;
	}
}
Classe Colis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public class Colis {
 
	private String ref;
	private double montant=0;
	private long idLivraison;
 
	public Colis(long idLivraison, double montant, String ref) {
		super();
		this.idLivraison = idLivraison;
		this.montant = montant;
		this.ref = ref;
	}
 
	public Colis(){
		super();
	}
 
	public double getMontant() {
		return montant;
	}
 
	public long getIdLivraison() {
		return idLivraison;
	}
 
	public String getRef(){
		return ref;
	}
 
	public void setId(long id){
		this.idLivraison = id;
	}
 
	public void setRef(String ref) {
		this.ref = ref;
	}
 
	public void setMontant(double montant) {
		this.montant = montant;
	}
 
	public String toString(){
		return "Colis : référence : "+ref+" => montant : "+montant;
	}
}

Activité principal:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class MainActivity extends ActionBarActivity {
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		GestionBD gestionBD = new GestionBD(this);
 
 
		LitFichier litFichier = new LitFichier();
		litFichier.execute("http://IPSERVEUR/livraisons.xml");
 
 
 
 
 
 
		try {
			if (litFichier.get())
			{	
				gestionBD.init();
				for (String ligne : gestionBD.donneLivraisons()) Log.i("bd", ligne);
				for (String ligne : gestionBD.donneColis()) Log.i("bd", ligne);
				for (String ligne: litFichier.donneLivraisons())
					Log.i("lithttp",ligne);
 
 
			}		
			else
				Log.i("litxml", "Problème lecture fichier");
		} catch (InterruptedException e) {
			Log.i("litxml", "Interruption lecture fichier");
		} catch (ExecutionException e) {
			Log.i("litxml", "Problème exécution");
		}
	}
 
	@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);
	}
 
	/**
         * A placeholder fragment containing a simple view.
         */
	public static class PlaceholderFragment extends Fragment {
 
		public PlaceholderFragment() {
		}
 
		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}
 
}
Merci de votre aide