Rendere unico il valore di un singolo campo:
public class Helper extends SQLiteOpenHelper { public Helper(Context context) { super(context, "database.db",null,1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE NOMI(_ID INTEGER PRIMARY KEY, " + "NOME TEXT NOT NULL UNIQUE, COGNOME TEXT)"); } public void save(String nome, String cognome){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("NOME", nome); values.put("COGNOME", cognome); try { db.insertOrThrow("NOMI", null, values); }catch(Exception e){ System.out.println("ERRORE"); } }Per avere una gestione dell'errore devo usare insertOrThrow in luogo di insert.
Ora provo a inserire due records con il nome uguale.
helper=new Helper(this); helper.save("Mario","Rossi"); helper.save("Mario","Bianchi"); } }
11-26 17:55:24.511 31319-31319/? I/System.out: ERROREe il database contiene solo il primo record.
Rendere unico il valore di una combinazione di campi:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE NOMI(_ID INTEGER PRIMARY KEY, " +
"NOME TEXT, COGNOME TEXT, UNIQUE(NOME, COGNOME))");
}
public void save(String nome, String cognome){
SQLiteDatabase db=this.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("NOME", nome);
values.put("COGNOME", cognome);
try {
db.insertOrThrow("NOMI", null, values);
}catch(Exception e){
System.out.println("ERRORE");
}
}
Ora riprovo a inserire i due record di prima con solo il nome uguale:
Helper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper=new Helper(this); helper.save("Mario","Rossi"); helper.save("Mario","Bianchi"); } }Nessuna segnalazione di errore:
...e la tabella del database contiene tutti e due i records.
Ora provo a inserire due record uguali per nome e per cognome:
Helper helper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); helper=new Helper(this); helper.save("Mario","Rossi"); helper.save("Mario","Rossi"); } }
11-26 18:02:17.103 3062-3062/? I/System.out: ERRORE...e il database contiene solo il primo record.
Ora vorrei un'altra funzione: cercare un record sul database, se presente restituire l'id, se assente inserire il nuovo dato.
Si potrebbe gestire con le funzioni di cui sopra...
Nessun commento:
Posta un commento