SQLiteDatabase getWritableDatabase () no funciona

Estoy recibiendo el error

02-15 08: 36: 13.097: I / SqliteDatabaseCpp (404): sqlite devuelto: error code = 1, msg = cerca de "null": error de sintaxis, db = / datos / datos / com.lifeApp / databases / contactsManager

En la línea 157 de mi código. Esta es la sección bajo el método

getAllContacts() 

El código que no funciona es

 SQLiteDatabase db = this.getWritableDatabase(); 

Ejemplo completo:

 package com.lifeApp; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.database.Cursor; public class DatabaseHandler extends SQLiteOpenHelper { // All Static variables // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "contactsManager"; // Contacts table name private static final String TABLE_CONTACTS = "contacts"; // Contacts Table Columns names private static final String KEY_ID = "id"; private static final String FIRSTNAME = "firstname"; private static final String LASTNAME = "lastname"; private static final String PASSWORD = "password"; private static final String EMAIL = "email"; private static final String KEY_PH_NO = "phone_number"; private static final String KEY_NAME = null; public DatabaseHandler(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Creating Tables @Override public void onCreate(SQLiteDatabase db) { String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + FIRSTNAME + " TEXT," + LASTNAME + " TEXT," + PASSWORD + " TEXT" + EMAIL + " TEXT" + KEY_PH_NO + " TEXT" + ")"; db.execSQL(CREATE_CONTACTS_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); // Create tables again onCreate(db); } /** * All CRUD(Create, Read, Update, Delete) Operations */ // Adding new contact void addContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); // Contact Name values.put(FIRSTNAME, contact.getFirstname()); values.put(LASTNAME, contact.getLastname()); values.put(EMAIL, contact.getEmail()); values.put(PASSWORD, contact.getPassword()); values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone // Inserting Row db.insert(TABLE_CONTACTS, null, values); db.close(); // Closing database connection } // Getting single contact Contact getContact(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_PH_NO }, KEY_ID + "=?", new String[] { String.valueOf(id) },null,null,null,null); if (cursor != null) cursor.moveToFirst(); Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6)); // return contact return contact; } // Getting All Contacts public List<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<Contact>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); // looping through all rows and adding to list if (cursor.moveToFirst()) { do { Contact contact = new Contact(); contact.setID(Integer.parseInt(cursor.getString(0))); contact.setFirstname(cursor.getString(1)); contact.setLastname(cursor.getString(2)); contact.setPassword(cursor.getString(3)); contact.setEmail(cursor.getString(4)); // Adding contact to list contactList.add(contact); } while (cursor.moveToNext()); } // return contact list return contactList; } // Updating single contact public int updateContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); values.put(FIRSTNAME, contact.getFirstname()); values.put(LASTNAME, contact.getLastname()); values.put(PASSWORD, contact.getPassword()); values.put(EMAIL, contact.getEmail()); values.put(KEY_PH_NO, contact.getPhoneNumber()); // updating row return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", new String[] { String.valueOf(contact.getID()) }); } // Deleting single contact public void deleteContact(Contact contact) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_CONTACTS, KEY_ID + " = ?", new String[] { String.valueOf(contact.getID()) }); db.close(); } // Getting contacts Count public int getContactsCount() { String countQuery = "SELECT * FROM " + TABLE_CONTACTS; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); cursor.close(); // return count return cursor.getCount(); } } 

En CREATE_CONTACTS_TABLE se pierden algunas comas

  String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," + FIRSTNAME + " TEXT," + LASTNAME + " TEXT," + PASSWORD + " TEXT" <== + EMAIL + " TEXT" <== + KEY_PH_NO + " TEXT" + ")"; db.execSQL(CREATE_CONTACTS_TABLE); 
  • Recuperar una lista de todas las tablas de la base de datos
  • Eliminar todas las filas de una tabla, lanza nullpointer
  • SQLITE - configuración de la versión de una nueva base de datos
  • ¿Cómo establecer el tipo de datos en SQLiteDatabase vinculación de consulta en bruto?
  • La base de datos SQLite ..onCreate () no se está llamando
  • Implementación SQLite deficiente? Acceso a los datos por primera vez demasiado lento
  • Leer datos de sqlite cuando se está ejecutando una transacción (Android)
  • Intenta reabrir un objeto ya cerrado: sqlitequery
  • Cambiar la profundidad de bits de Bitmap
  • ¿Debo usar siempre transacciones en android sqlite?
  • Excepción de tiempo de ejecución de la biblioteca de persistencia de habitación al llamar al método Rooms inMemoryBuilder
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.