2010-08-22 17 views
5

Quiero incrementar una columna en una base de datos de android sqlite. Im haciendo de esta manera:Cómo incrementar el campo en la base de datos de android sqlite

public void atualiza(String word){ 
    this.db.rawQuery("UPDATE words SET count = count + 1 WHERE word= ? ", new String[] {word});  
} 

Y llamo este método en otra clase como esta:

this.dh.atualiza(word); 

Pero cuando me tire de la base de datos del emulador y comprobar con el navegador de base de datos SQLite, el campo se no incrementado ¿Por qué?

+0

¿qué tal si lo hace un selecto desde el código (seleccione contar desde palabras donde word =?), ¿devuelve el valor correcto? (¿Definitivamente está tirando de la base de datos correcta?) –

+1

Creo que 'rawQuery' devuelve un código de error. ¿Puedes verificar qué es? Además, las actualizaciones deben hacerse con execSQL. – MPelletier

Respuesta

0

lo necesario para empezar una transacción en la base de datos Data not inserting in Sqlite database in android

+0

Debo señalar que cuando las transacciones no se especifican, SQLite hace las suyas. – MPelletier

+0

Hmm ... ¿Conoces buenos documentos de Android sobre esa función? Apreciaría mucho un enlace. –

+0

Es una característica de SQLite, no tanto como Android, pero aquí está el documento oficial: http://sqlite.org/lang_transaction.html: "No se pueden realizar cambios en la base de datos, excepto en una transacción. Cualquier comando que cambie la base de datos (básicamente, cualquier comando SQL que no sea SELECT) iniciará automáticamente una transacción si todavía no está en vigor. Las transacciones iniciadas automáticamente se confirman cuando finaliza la última consulta ". – MPelletier

Cuestiones relacionadas