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:
package xml:
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; } }
classe MaSaxHandler:
pakcage métier:
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; } }
Classe GestionBD:
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
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 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 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 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
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; } }
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:
Merci de votre aide
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; } } }
Partager