Here is my code:
final String[] names_list = { "apple", "banana", "orange" };
final int[] preview_list = { "R.drawable.apple", "R.drawable.banana", "R.drawable.orange" };
final int[] colors_list = { "red", "yellow", "orange" };
int random = (int) (Math.random() * 3);
String name= names_list[random];
int preview= preview_list[random];
int color= colors_list[random];
helper = new DatabaseHelper(getApplicationContext());
helper.insertIntoDB(name, preview, color);
As it turns out ( int random = (int) (Math.random() * 3); ) code generates a random number from 1 to 3 ( depends on the count off the arrays in each list ) and then for example if variable random is 1 DatabaseHelper inserts first arrays of array list into the database ( "apple", "R.drawable.apple" and "red" ) whilst the array "apple" from names_list array list will be inserted as a primary unique value. My question is that what can I do to prevent my program insert repetitive data into database for example if variable random becomes 1 for the second time program ignore it and generate a new variable random number.
here is DatabaseModel:
public class DatabaseModel {
private String name;
private int preview;
private int color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPreview() {
return preview;
}
public void setPreview(int preview) {
this.preview = preview;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
and DatabaseHelper
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME="fruits";
private static final int DATABASE_VERSION = 1;
private static final String FRUITS_TABLE = "fruitsreg";
private static final String FS_TABLE = "create table "+FRUITS_TABLE +"(name TEXT primary key,preview TEXT, color TEXT)";
Context context;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(FS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + FRUITS_TABLE);
// Create tables again
onCreate(db);
}
/* Insert into database*/
public void insertIntoDB(String name, int preview, int color){
Log.d("insert", "before insert");
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. create ContentValues to add key "column"/value
ContentValues values = new ContentValues();
values.put("name", name);
values.put("preview", String.valueOf(preview));
values.put("color", color);
// 3. insert
db.insert(FRUITS_TABLE, null, values);
// 4. close
db.close();
Toast.makeText(context, "insert value", Toast.LENGTH_LONG);
Log.i("insert into DB", "After insert");
}
/* Retrive data from database */
public List<DatabaseModel> getDataFromDB(){
List<DatabaseModel> modelList = new ArrayList<DatabaseModel>();
String query = "select * from "+FRUITS_TABLE;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
DatabaseModel model = new DatabaseModel();
model.setName(cursor.getString(0));
model.setPreview(cursor.getInt(1));
model.setColor(cursor.getInt(2));
modelList.add(model);
}while (cursor.moveToNext());
}
Log.d("Fruits database data", modelList.toString());
return modelList;
}