studio not found descargar dbhelper create commands android sqlite3

android - not - sqlite3 commands



SQLiteDatabase.insert() devuelve rowid incorrecto para tablas virtuales (1)

De la búsqueda de texto completo de SQLite :

Su tabla debe contener al menos 1 campo TEXTO.

PD: +1: no sabía sobre tablas virtuales . Gracias.

Cuando inserto una fila en una base de datos de búsqueda de texto completo declarada como:

CREATE VIRTUAL TABLE foo USING fts3 (bar);

el método SQLiteDatabase.insert () devuelve un rowid incorrecto. Si la tabla se declara como:

CREATE TABLE foo (bar VARCHAR(10));

devuelve el valor rowid correcto. El problema es cuando consulto la base de datos poco después de insertar usando rowid devuelto por el método, el Cursor devuelto no tiene registros. Funciona correctamente para la primera inserción en la base de datos solamente. Para inserciones posteriores, se devuelve un rowid incorrecto.

¿Hay algo que deba hacer para obtener el rowid correcto del método SQLiteDatabase.insert ()?

Estoy usando Android SDK versión 2.1update1.

Gracias, Dan

Actualización: Terminé usando un truco para obtener la última identificación de la fila usando el siguiente código:

private int getLastRowId(SQLiteDatabase db, String table) { Cursor cursor = null; try { cursor = db .rawQuery(String.format(Locale.US, "SELECT MAX(rowid) FROM %s", table), null); if (cursor.moveToFirst()) { return cursor.getInt(0); } else { return 0; } } finally { if (cursor != null) { cursor.close(); } } }

En mi caso, es seguro porque solo un usuario tiene acceso a la aplicación. Para las aplicaciones de servicio, esto puede no funcionar dependiendo de cómo se implemente / use.

Creo que tenemos este problema porque al realizar una inserción en tablas fts3, se inserta más de una fila. También se inserta una fila en la tabla de materias y en las tablas de administración de fts3.