2011-10-19 5 views
0

J'essaie d'insérer des données dans ma base de données Android SQLite fraîchement créé avec ce morceau de code, mais il ne fonctionne pas.Android SQLite Insérer des données

Voici l'erreur:

10-19 19:05:39.793: INFO/Database(413): sqlite returned: error code = 1, msg = near ",": syntax error 

Je sais que le code besoin d'un propre, mais je le ferai plus tard ... ^^

Voici le code:

SQLiteDatabase db = this.sqlHelper.getWritableDatabase(); 
ContentValues dv = new ContentValues(); 
dv.put("`createdTime`", h.createdTime); 
dv.put("`type`", h.type); 
dv.put("`what`", h.what); 
dv.put("`where`", h.where); 
dv.put("`readableWhat`", h.readableWhat); 
dv.put("`readableWhere`", h.readableWhere); 
dv.put("`accuracy`", h.accuracy); 
dv.put("`isMnemo`", h.isMnemo); 
dv.put("`isPlaceCode`", h.isPlaceCode); 
dv.put("`isCoords`", h.isCoords); 
dv.put("`isNear`", h.isNear); 
dv.put("`isEverywhere`", h.isEverywhere); 

Cursor c = db.query("HISTORY", 
     new String[]{ 
       "`type`", 
       "`what`", 
       "`where`", 
       "`readableWhat`", 
       "`readableWhere`", 
       "`accuracy`", 
       "`isMnemo`", 
       "`isPlaceCode`", 
       "`isCoords`", 
       "`isNear`", 
       "`isEverywhere`", 
     }, 
     "`type`='" + h.type + "'" + "," + 
     "`what`='" + h.what + "'" + "," + 
     "`where`='" + h.where + "'" + "," + 
     "`readableWhat`='" + h.readableWhat + "'" + "," + 
     "`readableWhere`='" + h.readableWhere + "'" + "," + 
     "`accuracy`='" + h.accuracy +"'" + "," + 
     "`isMnemo`='" + h.isMnemo + "'" + "," + 
     "`isPlaceCode`='" + h.isPlaceCode + "'" + "," + 
     "`isCoords`='" + h.isCoords + "'" + "," + 
     "`isNear`='" + h.isNear + "'" + "," + 
     "`isEverywhere`='" + h.isEverywhere + "'" 
     , 
     null, null, null, null); 
if (!c.moveToFirst()) 
{ 
    PJUtils.log("INSERT " + h.readableWhat + " - " + h.readableWhere); 
    db.insertOrThrow("HISTORY", "", dv); 
} 
else 
{ 
    PJUtils.log("UPDATE " + h.readableWhat + " - " + h.readableWhere); 
    db.update("CONFIG", 
     dv, 
     "`type`='" + h.type + "'" + "," + 
     "`what`='" + h.what + "'" + "," + 
     "`where`='" + h.where + "'" + "," + 
     "`readableWhat`='" + h.readableWhat + "'" + "," + 
     "`readableWhere`='" + h.readableWhere + "'" + "," + 
     "`accuracy`='" + h.accuracy +"'" + "," + 
     "`isMnemo`='" + h.isMnemo + "'" + "," + 
     "`isPlaceCode`='" + h.isPlaceCode + "'" + "," + 
     "`isCoords`='" + h.isCoords + "'" + "," + 
     "`isNear`='" + h.isNear + "'" + "," + 
     "`isEverywhere`='" + h.isEverywhere + "'" 
     , 
     null); 
} 
c.close(); 
+0

Pourquoi mettez-vous dans vos cordes apostrophes; Je veux dire "'type' =" au lieu de "type ="? – slkorolev

+0

Comment faire autrement? Je veux dire ton chemin avec 'type =?'. Parlez-vous du paramètre 'selectionArgs'? – ChristopheCVB

Répondre

2

Au lieu de

+ "," + 

utilisation

+ " and " + 
+0

Merci beaucoup! Choses stupides... – ChristopheCVB

0

Essayez ceci pour votre requête:

  String[] columns = new String[]{ 
       "type", 
       "what", 
       "where", 
       "readableWhat", 
       "readableWhere", 
       "accuracy", 
       "isMnemo", 
       "isPlaceCode", 
       "isCoords", 
       "isNear", 
       "isEverywhere" }; 
     String selection = "type=? AND what=? AND where=? AND readableWhat=? AND readableWhere=? AND accuracy=? AND isMnemo=? AND isPlaceCode=? AND isCoords=? AND isNear=? AND isEverywhere=?"; 
     String[] selectionArgs = new String[]{ 
       h.type, 
       h.what, 
       h.where, 
       h.readableWhat, 
       h.readableWhere, 
       h.accuracy, 
       h.isMnemo, 
       h.isPlaceCode, 
       h.isCoords, 
       h.isNear, 
       h.isEverywhere 
     }; 
     Cursor c = db.query("HISTORY", columns, selection, selectionArgs, null, null, null); 
Questions connexes