如何将double和float值插入sqlite?

din*_*707 55 sqlite android

以下是我的数据库创建代码.

@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);");
    }
Run Code Online (Sandbox Code Playgroud)

然后在这里添加一个数据点代码

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);
    }
Run Code Online (Sandbox Code Playgroud)

我打电话的时候

addGeoDataEntry(10.0,11.0,3.0f,1.1f);
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误.如何解决这个问题?

03-14 13:57:26.910: I/Database(27910): sqlite returned: error code = 1, msg = near "1.0": syntax error
Run Code Online (Sandbox Code Playgroud)

War*_*ith 105

REAL是你在找什么.SQLite数据类型的文档

  • 在不更改数据库版本的情况下,永远不会调用onUpgrade.因此,最好的方法是删除您的应用程序并进行全新安装以进行测试. (3认同)

San*_*dhu 13

SQL支持以下类型的亲和力:

  • 文本
  • 数字
  • 整数
  • 真实
  • BLOB

如果列的声明类型包含任何"REAL","FLOAT"或"DOUBLE",则该列具有"REAL"亲和力.


Cha*_*har 5

我认为您应该将列的数据类型指定为NUMERICDOUBLEFLOATREAL

阅读http://sqlite.org/datatype3.html以获得更多信息。