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