75 votes

Comment insérer des valeurs doubles et flottantes dans sqlite?

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

Ensuite, 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);

il 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

144voto

WarrenFaith Points 28137

REAL est ce que vous recherchez. Documentation des types de données SQLite

17voto

Sandhu Points 530

SQL prend en charge les types d'affinités suivants :

  • TEXTE
  • NUMÉRIQUE
  • ENTIER
  • RÉEL
  • GOUTTE

Si le type déclaré pour une colonne contient l'un de ces "REAL", "FLOAT" ou "DOUBLE", alors la colonne a une affinité "REAL".

5voto

Chandra Sekhar Points 6512

Je pense que vous devriez donner les types de données de la colonne comme NUMERIC ou DOUBLE ou FLOAT ou REAL

Lisez http://sqlite.org/datatype3.html pour plus d'informations.

1voto

Joe Points 1204

en fait, je pense que votre code est très bien.. vous pouvez enregistrer ces valeurs sous forme de chaînes (TEXTE) comme vous l'avez fait.. (si vous le souhaitez)

et vous obtenez probablement l'erreur pour System.currentTimeMillis() qui pourrait être trop grande pour INTEGER

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X