¿Cómo insertar valores dobles y flotantes en sqlite?
A continuación se muestra mi código de creación de DB.
@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);"); }
Luego aquí va la adición de un código de punto de datos
- ¿Preguntas con declaraciones preparadas en Android?
- ¿Qué se puede hacer sobre el hecho de que Android elimina automáticamente los archivos corruptos de SQLite?
- Cómo agregar la cláusula de límite a manageQuery en android
- La restricción de Android Room FOREIGN KEY falló
- Buscar datos en la base de datos SQLite de Android
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); }
Cuando llamo
addGeoDataEntry(10.0,11.0,3.0f,1.1f);
Da el error siguiente. ¿Cómo arreglar esto?
03-14 13:57:26.910: I/Database(27910): sqlite returned: error code = 1, msg = near "1.0": syntax error
- Android cierre y apertura de base de datos SQLite en el nivel de aplicación
- SQLiteAssetHelper - problemas en teléfonos específicos, por ejemplo OnePlus
- SQLiteDatabase close () función que causa NullPointerException cuando varios subprocesos
- ¿Por qué los Cursores Android comienzan antes de la primera fila de resultados y terminan después de la última fila?
- Extraer una base de datos del emulador genymotion a un disco local
- Tabla de actualización de Android sqlite siempre devuelve 0
- Es posible copia de seguridad y restaurar un archivo de base de datos en android? Dispositivos no root
- SQLITE INSERT con ID manual (clave principal)
REAL
es lo que buscas. Documentación de tipos de datos SQLite
Creo que debería dar los tipos de datos de la columna como NUMERIC o DOUBLE o FLOAT o REAL
Lea http://sqlite.org/datatype3.html para más información.
SQL soporta los siguientes tipos de afinidades:
- TEXTO
- NUMÉRICO
- ENTERO
- REAL
- GOTA
Si el tipo declarado para una columna contiene alguno de estos "REAL", "FLOAT" o "DOUBLE", entonces la columna tiene afinidad "REAL".
De hecho, creo que su código está bien .. usted puede guardar los valores como cadenas (TEXT) al igual que lo hizo .. (si lo desea)
Y probablemente obtiene el error para el System.currentTimeMillis () que puede ser demasiado grande para INTEGER
enter code here package in.my; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBAdapter { private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; private static final String DATABASE_NAME = "helper.db"; private static final int DATABASE_VERSION = 1; public static final String KEY_ID = "_id"; private static final String Table_Record = "create table Student (_id integer primary key autoincrement, " + "Name text not null,rate integer, Phone text not null,Salary text not null,email text not null,address text not null,des text not null,qual text not null,doj text not null);"; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); // TODO Auto-generated constructor stub } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL(Table_Record); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } } public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return DBAdapter.this; } //---closes the database--- public void close() { DBHelper.close(); } public long insertTitle(String name,String phone,String web,String des,String address,String doj,String qual,String sal,int rate) { ContentValues initialValues = new ContentValues(); initialValues.put("Name", name); initialValues.put("Phone", phone); initialValues.put("email", web); initialValues.put("des", des); initialValues.put("Salary", sal); initialValues.put("qual", qual); initialValues.put("address", address); initialValues.put("doj", doj); initialValues.put("rate", rate); return db.insert("Student", null, initialValues); } public boolean deleteTitle(long rowId) { return db.delete("Student", KEY_ID + "=" + rowId, null) > 0; } public boolean UpdateTitle(long id,String name,String phone,String web,String des,String address,String doj,String qual,String sal,int rate) { ContentValues initialValues = new ContentValues(); initialValues.put("Name", name); initialValues.put("Phone", phone); initialValues.put("email", web); initialValues.put("des", des); initialValues.put("qual", qual); initialValues.put("Salary", sal); initialValues.put("address", address); initialValues.put("doj", doj); initialValues.put("rate", rate); return db.update("Student",initialValues, KEY_ID + "=" + id, null)>0; //return db.insert("Student", null, initialValues); } public Cursor getAllRecords() { return db.query("Student", new String[] { KEY_ID, "Name", "Phone", "email", "address", "des", "qual", "doj", "Salary", "rate" }, null, null, null, null, null); } }