¿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
- Se une con ActiveAndroid - cómo obtener los datos de la segunda tabla
- IntelliJ Permiso de SQLite denegado en Android Lollipop, trabajado antes
- SQLite de Android - Clave principal - Insertar en la tabla
- Actualizaciones de la base de datos Sqlite activan el servicio para actualizar a través de Content Observer
- SQLite rawQuery campos de selecciónArgs y enteros
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
- ContentProvider llamadas atómicas? Guardar en onPause, cargar en OnActivityCreated, datos antiguos
- SQLiteException cerca de "<" mientras se borra la consulta
- ¿Puede el androide sqlite interfaz ser utilizado fuera de Android
- Mantenimiento de un ListView donde cada elemento de lista tiene una relación de uno a muchos
- Dónde colocar una base de datos existente en el proyecto de estudio de android
- Una herramienta de desarrollo para diseñar una base de datos SQLite para Android
- Android JUnit4 Pruebas - ¿Dónde obtener el contexto de?
- La base de datos no se copia correctamente en OnePlus Two
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); } }