Comprobar si existe una entrada en una base de datos

Quiero comprobar si existe una entrada en mi base de datos.

He intentado:

private void saveIt() { MenuItem item = menu.findItem(R.id.menu_2); myDB = this.openOrCreateDatabase(MY_DATABASE_NAME, MODE_PRIVATE, null); Cursor c = myDB.rawQuery("SELECT * FROM " + MY_DATABASE_TABLE + " WHERE idwp= '" + id + "'", null); if(c == null) { item.setIcon(R.drawable.b); try { myDB.execSQL("INSERT INTO "+MY_DATABASE_TABLE+" (titel, extra, html) VALUES ('"+titel.replace("'", "\"")+"','"+extra.replace("'", "\"")+"','"+html.replace("'", "\"")+"');"); } finally { if (myDB != null) myDB.close(); } Toast.makeText(getApplicationContext(), "saved", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "already exist", Toast.LENGTH_SHORT).show(); } myDB.close(); } 

Pero siempre dice "ya existen". He visto mi base de datos. No hay ninguna entrada donde id = xxx !

¡Gracias por ayudar!

UPDATE: He encontrado un misstake: INSERT INTO … extra, html, id <- Me olvido de la identificación!

Esta es una gran comunidad para resolver problemas!

Un Cursor no será null pero podría estar vacío , necesitas usar esto:

 if(c.getCount() > 0) { Toast.makeText(getApplicationContext(), "already exist", Toast.LENGTH_SHORT).show(); } else { // Does not exist! } 

También puede utilizar cualquiera de los métodos de Cursor#move , ya que devuelven true o false dependiendo de si hay datos válidos en el Cursor.

Cambio

 Cursor c = myDB.rawQuery("SELECT * FROM " + MY_DATABASE_TABLE + " WHERE idwp= '" + id + "'", null); if(c == null) { 

a:

 Cursor c = myDB.rawQuery("SELECT * FROM " + MY_DATABASE_TABLE + " WHERE idwp= '" + id + "'", null); if(c.getCount() == 0 ) { 
  • androide sqlite cómo ordenar por el tiempo
  • Android SQLite ON CONFLICT UPDATE es posible?
  • DBFlow seleccionar donde COLUMN en la lista?
  • ¿Se trata de una consulta SQLite válida?
  • SQLite de Android - ¿por qué mi DB se vuelve a crear cada vez?
  • Comprobación del resultado de rawQuery de Android
  • Android.database.sqlite.SQLiteException: la tabla X no tiene columna llamada Y:, mientras compila: INSERT INTO
  • ¿Por qué la aplicación PhoneGap de Android se bloquea al insertar un montón de datos en SQL?
  • Cómo insertar a granel de Json a Sqlite en Android
  • ¿Puedo conectar android (Eclipse) a SQL Server (2005) usando servicios web de php?
  • SelectionArgs en SQLiteQueryBuilder no funciona con valores enteros en columnas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.