Android SQLite issue – table … no tiene una columna llamada
Estoy recibiendo este error – 07-03 12:29:18.643: E/SQLiteLog(5181): (1) table accounts has no column named otherNotes
Este es mi código:
- ¿Cómo almacenar los datos de edittext a Android base de datos sqlite?
- SQLite ordena caracteres especiales alfabéticamente
- ¿Cómo se comprueba si existe una tabla en una base de datos SQLite de Android?
- Cómo utilizar la consulta para el argumento de selección múltiple utilizando una columna de selección
- ¿Qué es más rápido: almacenar datos en una lista o en una base de datos? (Androide)
private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "accountsManager"; private static final String TABLE_ACCOUNTS = "accounts"; private static final String KEY_ID = "id"; private static final String KEY_TITLE = "title"; private static final String KEY_USERID = "userId"; private static final String KEY_PASSWORD = "password"; private static final String KEY_LOGINURL = "loginUrl"; private static final String KEY_OTHERNOTES = "otherNotes"; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public void onCreate(SQLiteDatabase db) { String CREATE_ACCOUNTS_TABLE = "CREATE TABLE " + TABLE_ACCOUNTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT," + KEY_USERID + " TEXT," + KEY_PASSWORD + " TEXT," + KEY_LOGINURL + " TEXT," + KEY_OTHERNOTES + " TEXT" + ");"; db.execSQL(CREATE_ACCOUNTS_TABLE); } public void addAccount(AccountDetails account) { SQLiteDatabase db = this.getWritableDatabase(); System.out.println("Hello!"); ContentValues values = new ContentValues(); values.put(KEY_TITLE, account.getTitle()); // Account Title values.put(KEY_USERID, account.getUserId()); // account userid values.put(KEY_PASSWORD, account.getPassword()); // account password values.put(KEY_LOGINURL, account.getLoginUrl()); // account loginurl values.put(KEY_OTHERNOTES, account.getOtherNotes()); // account othernotes Log.v("title", KEY_TITLE); // Inserting Row db.insert(TABLE_ACCOUNTS, null, values); db.close(); // Closing database connection }
También, cuando quito la siguiente declaración:
values.put(KEY_OTHERNOTES, account.getOtherNotes()); // account othernotes
Entonces consigo el mismo problema con la contraseña … etc. Es decir, (1) cuentas de tabla no tiene columna nombre contraseña
¡¡Por favor ayuda!!
- nativescript-sqlite y módulo angular2 no se encuentra excepción
- Cómo recuperar el formato DATETIME de la base de datos Sqlite
- Mejor alternativa de la librería Android de SQLite?
- Usar insertWithOnConflict para actualizar o insertar
- Cambiar la clave principal de una tabla en SQLite
- Almacenamiento de datos de Android, Cuándo utilizar SqlLite y cuándo usar JSON, alternativas de Linq
- Entender el campo de incremento automático de Android de sqlite
- ¿Cómo implementar la búsqueda difusa con FTS3 de SQLite?
Parece que agregó algunas columnas más adelante en la base de datos. Estoy de acuerdo con Ken Wolf y deberías considerar desinstalar y volver a instalar tu aplicación. Un mejor enfoque es, soltar y volver a crear todas las tablas en el método onUpdate
, y aumentar la versión db cada vez que cambie el esquema.
Bueno, si usted es confindent acerca de la sintaxis para la creación de tabla, que puede suceder cuando se agrega nueva columna en su misma tabla, por eso …
1) Unistall desde su dispositivo y ejecútelo de nuevo.
O
2) Configuración -> aplicación -> ClearData
O
3) Cambiar DATABASE_NAME en su clase "DatabaseHandler" (me enfrenté al mismo problema, pero suuceed cambiando DATABASE_NAME.)
O
4) Cambiar DATABASE_VERSION en su clase "DatabaseHandler" (Si ha agregado nueva columna de la que se actualizará autimatically)
public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); }
El código SQL se ve bien. Creo que olvidó llamar a open()
en el objeto de base de datos que creó.
Añada estos métodos a usted clase de SQL:
private DbHelper ourHelper; private final Context ourContext; private SQLiteDatabase ourDatabase; public DataBaseMain open() throws SQLException{ //open the database to make her writeable, must be called before writing to database ourHelper = new DbHelper(ourContext); ourDatabase = ourHelper.getWritableDatabase(); return this; } public void close(){ //closing the database for writing, avoids error. ourHelper.close(); }
Y utilice cuando quiera llamar DB.
Como dice Benil en un comentario anterior , cambie el número de la versión de la base de datos y ejecute el código de nuevo.
Intente "Borrar datos" de su aplicación desde Configuración. Para mí este problema estaba ocurriendo porque yo era datos de almacenamiento en tarjeta SD y más tarde he añadido algunas columnas. Tan si usted está ahorrando en tarjeta del SD suprime los datos anteriores.
Aquí es tu consulta … TRY esto.
String CREATE_ACCOUNTS_TABLE = "CREATE TABLE "+TABLE_ACCOUNTS+"(KEY_ID INTEGER PRIMARY KEY,KEY_TITLE TEXT,KEY_USERID TEXT,KEY_PASSWORD TEXT,KEY_LOGINURL TEXT,KEY_OTHERNOTES TEXT);";
Es posible que si cometiste un error en la consulta de creación y luego arreglarlo,
Así que en el sistema de archivos que tiene un db, pero este db posiblemente no tiene tal columna.
Solución: busque en el emulador un archivo db: data / data / com.somecompany.yourapp / databases / db y elimínelo y vuelva a intentarlo.
También es posible abrir este archivo en algún explorador sql y comprobar si hay esa columna.
Sólo puede especificar la versión como esta:
private static final int VERSION = 4;
- Cómo cambiar el indicador HomeAsUp en la nueva barra de herramientas de AppCompat?
- Fugas de memoria en la aplicación de Android