Voici mon code de création de base de données.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
TIME + " INTEGER, " +
LONGI + " TEXT, "+
LATI + " TEXT, "+
SPEED + " TEXT, "+
ACCU + " TEXT);");
}
Puis voici l'ajout d'un code de point de données
private void addGeoDataEntry(double logi, double lati, float speed, float accu) {
SQLiteDatabase db = gpsDataHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TIME, System.currentTimeMillis());
values.put(LONGI, logi+"");
values.put(LATI, lati+"");
values.put(SPEED, speed+"");
values.put(ACCU, accu+"");
db.insertOrThrow(TABLE_NAME, null, values);
}
quand j'appelle
addGeoDataEntry(10.0,11.0,3.0f,1.1f);
cela donne l'erreur suivante. Comment régler ceci?
03-14 13:57:26.910: I/Database(27910): sqlite returned: error code = 1, msg = near "1.0": syntax error
REAL
est ce que vous recherchez. Documentation des types de données SQLite
SQL prend en charge les types d'affinités suivants:
Si le type déclaré d'une colonne contient l'un de ces symboles "REAL", "FLOAT" ou "DOUBLE", la colonne a une affinité "REAL".
Je pense que vous devriez donner les types de données de la colonne sous la forme [~ # ~] numérique [~ # ~] ou [~ # ~] double [~ # ~] ou [~ # ~] float [~ # ~] ou [~ # ~] réel [~ # ~]
Lire http://sqlite.org/datatype3.html pour plus d'informations.
en fait, je pense que votre code est très bien .. vous pouvez sauvegarder ces valeurs sous forme de chaînes (TEXT) comme vous l'avez fait .. (si vous le souhaitez)
et vous obtenez probablement l'erreur pour System.currentTimeMillis () qui est peut-être trop grande pour INTEGER