Ajouter des données dans une base SQLLite

Fermé
titi0006 Messages postés 157 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 15 mars 2017 - 8 mai 2014 à 19:24
Bonjour,

Je réalise une application Android qui consiste à lire un fichier XML et à enregistrer le contenu dans une base de donnée. J'ai réussi à lire mon fichier mais je bloque pour l'ajout dans la base.

Voici le fichier XML:
<livraisons>
<livraison>
<client>Mme Lagrange</client>
<adresse>28 rue des Rainettes 33150 Cenon</adresse>
<colis>
<ref>172648574</ref>
<montant>96.00</montant>
</colis>
<colis>
<ref>172648586</ref>
<montant>45.80</montant>
</colis>
</livraison>
<livraison>
<client>M. Iribarne</client>
<adresse>5 chemin des Dunes 33510 Andernos</adresse>
<colis>
<ref>172648588</ref>
<montant>146.75</montant>
</colis>
</livraison>
</livraisons>

Package http:
Lithttp:
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:
MaSaxHandler:
ublic 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;
}
}

package métier:
Livraison:
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 + "\nRéférence : "+unColis.getRef()+ " => montant : "+unColis.getMontant();
}
return chaine;
}
}

Colis:
public class Colis {

private String ref;
private double montant=0;
private Livraison idLivraison;

public Colis(Livraison idLivraison, double montant, String ref) {
super();
this.idLivraison = idLivraison;
this.montant = montant;
this.ref = ref;
}

public Colis(){
super();
}

public double getMontant() {
return montant;
}

public Livraison getIdLivraison() {
return idLivraison;
}

public String getRef(){
return ref;
}

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;
}
}

BDHelper:
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
}
}

GestionBD:
public class GestionBD {
private SQLiteDatabase maBase;
private BdHelper monBdHelper;


public GestionBD(Context context) {
monBdHelper = new BdHelper(context, "baseLivraison", null, 1);
init();
}

public void init(){
long id;
Livraison uneLivraison;
Colis unColis;
open();

uneLivraison = new Livraison();
id = ajouteLivraison(uneLivraison);
unColis = new Colis();
ajouteColis(unColis, id);
close();

}
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, long id){
ContentValues v = new ContentValues();
v.put("idlivraison", id);
v.put("ref", colis.getRef());
v.put("montant", colis.getMontant());
maBase.insert("colis", null, v);
}
public void supprimeLivraisons(){
maBase.delete("livraison", 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;
}
}

Merci de votre aide