2010-07-17 7 views
1

actuellement je travaille sur ma 1ère application Android et je rencontre quelque chose que je ne peux pas résoudre. Lorsque je tente d'insérer des données dans ma base de données propre, il y a une erreur: 7 au 18 mars: 41: 04,414: ERREUR/AndroidRuntime (3480): java.lang.NullPointerExceptionLes valeurs stockées à l'aide de ContentValues ​​ne sont pas dans le bon ordre, POURQUOI?

Mon code pour insérer dans la table est:

public long createRecord(String created_time, String modified_time, 
     long reading, String unit, String period, String remark) { 

    ContentValues values = new ContentValues(6); 
    values.put(KEY_CREATED_TIME, created_time); 
    values.put(KEY_MODIFIED_TIME, modified_time); //System.out.println(values); 
    values.put(KEY_RECORD, reading); //System.out.println(values); 
    values.put(KEY_UNIT, unit); //System.out.println(values); 
    values.put(KEY_PERIOD, period);// System.out.println(values); 
    values.put(KEY_REMARK, remark); 

    System.out.println(values); 
    return mDb.insert(DATABASE_TABLE, null , values); 

} 

Ceci est sous ma classe Adapter qui est une instance de ma classe DatabaseHelper. Pour ma classe DatabaseHelper, je peux copier la base de données créée du dossier assets dans le dossier des bases de données système. Mais juste ne peut pas créer des données dans la table, j'ai essayé d'imprimer les "valeurs", il a montré que:

created_time = 2010-07-18 03:41:04 remarque = sur l'unité = mg/dL lecture = 67 période = Avant le repas modified_time = 00: 00: 00 ce qui n'était pas la façon dont il était censé être, donc j'ai deviné que cela pourrait être le problème. Quelqu'un peut-il m'aider avec ça? Recherche en ligne, mais pas beaucoup d'informations à ce sujet. Merci d'avance :)

Répondre

0

La raison de la commande n'est pas conservée est que ContentValues est soutenu par un HashMap. Donc c'est ok.
Le problème est probablement causé par mDb étant null (vérifiez avec System.out.println("" + mDb);).

+0

Ya, j'ai vérifié mDb il a montré "null". Puis-je en connaître la raison et comment puis-je y remédier? Merci – Wen

+0

Quelque chose s'est mal passé sur la ligne où vous obtenez une référence: 'SQLiteDatabase mDb = // null ici;' – yanchenko

+0

Ok, j'ai ajouté mDb = mDbHelper.getWritableDatabase(); Maintenant, le code fonctionne bien en mode émulateur mais pas sur le téléphone. Si je cours le code sur l'appareil il montre une erreur msg: 07-18 13: 51: 49.595: ERREUR/base de données (2022): Erreur d'insertion de remarque = ol période = Avant le repas modified_time = 00: 00: 00 unité = mg/dL reading = 68 created_time = 2010-07-18 13:51:49 07-18 13: 51: 49.595: ERREUR/Base de données (2022): android.database.sqlite.SQLiteException: aucune table de ce type: enregistrements:, lors de la compilation : INSERT INTO enregistrements (remarque, période, modified_time, unit, reading, created_time) VALEURS (?,?,?,?,?,?); Un conseil? – Wen

-1

Avez-vous vu le code source de SQLiteDatabase i Il a fait une sql et gérer it.but l'ordre est basé sur:

Set<Map.Entry<String, Object>> entrySet = null; 
    if (initialValues != null && initialValues.size() > 0) { 
     entrySet = initialValues.valueSet(); 
     Iterator<Map.Entry<String, Object>> entriesIter = entrySet.iterator(); 

Je pense que quelque chose de mal avec elle? ou l'ordre sera mal quand beaucoup de values.Do vous trouverez somew

0
if(db!=null){ 
     ContentValues row = new ContentValues(); 
     row.put("rt_id",tid); 
     row.put("rs_id", sid); 
     row.put("rsubject", rsubject); 
     row.put("rdescr",rdescr); 
     row.put("day", day); 
     row.put("month",month); 
     row.put("year",year); 
     row.put("stamp", stamp); 
     row.put("amount",amount); 

     long chk = db.insert("records",null, row); 

     if(chk!=0){ 
      Toast.makeText(myContext, "Record added successfully",Toast.LENGTH_LONG).show(); 
     }else{ 
      Toast.makeText(myContext, "Record added failed...! ",Toast.LENGTH_LONG).show(); 
     } 
     }else{ 
      Toast.makeText(myContext, "could Not connected database..!!! ",Toast.LENGTH_LONG).show(); 
     } 
    }catch(SQLiteException exc){ 
     Toast.makeText(myContext, "Record could not saved...!!! ",Toast.LENGTH_LONG).show(); 
    }finally{ 
     db.close(); 
     } 

Vous pouvez vérifier votre base de données objet est nulle ou non ... Ou le vérifier par tout println it..All le meilleur.

Questions connexes