SQLite insert No hay error de columna en android
Tengo problema al insertar datos de CSV. La pieza CSV funciona, pero la inserción devuelve el siguiente error. Básicamente dice que no existe la columna. Debajo está el código y también el código de la base de datos.
09-06 17:52:22.725: E/AndroidRuntime(19168): FATAL EXCEPTION: main 09-06 17:52:22.725: E/AndroidRuntime(19168): android.database.sqlite. SQLiteException: no such column: Ananas (code 1): , while compiling: INSERT INTO food (name, sacharides, glycemia, category1) VALUES (Ananas, 13, 45,1) 09-06 17:52:22.725: E/AndroidRuntime(19168): at android.database.sqlite.SQLiteConnection.nativePrepareStatement (Native Method)
Aquí está el código que falla.
- Obteniendo un valor único de SQLite en android
- Seleccione un primer carácter distinto basado en la columna de cadena
- SQLiteException: tabla ya existe
- ¿Consulta para obtener registros basados en Radius en SQLite?
- La base de datos no se eliminará cuando desinstale la aplicación de Android
FoodDatabase myHelper = new FoodDatabase(getApplicationContext()); myDatabase = myHelper.getReadableDatabase(); String[] nextLine; try { while ((nextLine = reader.readNext()) != null) { // nextLine[] is an array of values from the line System.out.println(nextLine[0]+ " " + nextLine[1] +" "+ nextLine[2]); String sql = "INSERT INTO food (name, sacharides, glycemia, category1) " + "VALUES (" + nextLine[0] + ", " + nextLine[1] + ", " + nextLine[2]+ "," + nextLine[3] +")"; // myDatabase.rawQuery(sql, null); myDatabase.execSQL(sql); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Aquí va cómo se ve la base de datos.
public class FoodDatabase extends SQLiteOpenHelper { public static final String TABLE_FOOD = "food"; public static final String COLUMN_ID = "id"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_SACHARIDES = "sacharides"; public static final String COLUMN_SACHARIDESPORTION = "sacharides_per_portion"; public static final String COLUMN_PORTIONSIZE = "portion_size"; public static final String COLUMN_GLYCEMIA = "glycemia"; public static final String COLUMN_CATEGORY1 = "category1"; public static final String COLUMN_CATEGORY2 = "category2"; public static final String COLUMN_CATEGORY3 = "category3"; private static final String DATABASE_NAME = "tables.db"; private static final int DATABASE_VERSION = 1; // Database creation sql statement private static final String DATABASE_CREATE = "create table " + TABLE_FOOD + "(" + COLUMN_ID + " integer primary key autoincrement, " + COLUMN_NAME + " text," + COLUMN_SACHARIDES + " real," + COLUMN_PORTIONSIZE + " integer," + COLUMN_SACHARIDESPORTION + " real," + COLUMN_GLYCEMIA + " integer,"+ COLUMN_CATEGORY1 + " integer," +COLUMN_CATEGORY2 + " integer," +COLUMN_CATEGORY3 + " integer);"; public FoodDatabase(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(FoodDatabase.class.getName(), "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS " + TABLE_FOOD); onCreate(db); }
- Cambio de cursor en CursorAdapter
- Android - Almacenamiento de datos confidenciales en la base de datos sqlite
- Error al leer la fila 0, columna 0 de una CursorWindow que tiene 0 filas, 64 columnas
- ¿Cómo sincronizar bases de datos SQLite y MySQL mediante notificaciones push?
- No se puede copiar la base de datos SQLite de los activos
- Cómo probar si el cursor está vacío en una consulta SQLiteDatabase
- Insertar valores en la base de datos SQLite manualmente
- AutoCompleteTextView con CursorLoader y SimpleCursorAdapter
No estoy seguro, pero es posible que necesite tener comillas simples ''
alrededor de las cadenas dentro de VALUES
. Tratar:
String sql = "INSERT INTO food (name, sacharides, glycemia, category1) " + "VALUES ('" + nextLine[0] + "', '" + nextLine[1] + "', '" + nextLine[2]+ "', '" + nextLine[3] +"' )";
En mi caso,
Desafortunadamente el nombre de la tabla es incompatible. Descansar Y sigue!
- Cómo cargar el archivo html almacenado dentro de la tarjeta SD en la vista web
- Vista de lista de carga dinámica de Android problemas de onScrollListener