Comprobar si existe una entrada en una base de datos
Quiero comprobar si existe una entrada en mi base de datos.
He intentado:
- Ordenar null-data last en la consulta de la base de datos
- Android sqlite insert no está insertando
- ¿Cuál es la forma correcta de hacer inserciones / actualizaciones / eliminaciones en Android SQLiteDatabase utilizando una cadena de consulta?
- Problema en sqlite con "como" en android
- ¿Cómo puedo hacer que sea más difícil para los jugadores hackear datos de nivel de juego?
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!
- La mejor manera de trabajar con las fechas en Android SQLite
- Tabla de puntuaciones altas
- Obtener la distancia más corta desde un punto
- No se pudo leer la fila 0, col -1 de CursorWindow?
- ¿Cómo comprobar si el valor ya existe en la base de datos android sqlite?
- Opciones de SyncAdapter
- Cambiar la clave principal de una tabla en SQLite
- Una buena biblioteca de ORM de Java en Android
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 ) {