Reputation: 1854
My app inserts 16 records into the database upon startup. However when i output these records 1 record (Union Restaurant) is being repeated 16 times. RLocationDatabase.java
creates the database. RDatabaseModel.java
is the structure of the contents of the database. MainActivity.java
executes the app and inserts records.
RLocationDatabase.java
public class RLocationDatabase extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "RGeoDbase";
public static final String TABLE_RG = "RGeoDbase";
public static final String PR_KEY = "ID";
public static final String R_ID = "RestaurantID";
public static final String R_Name = "Name";
public static final String R_Latitude = "Latitude";
public static final String R_Longitude = "Longitude";
public static final String [] COLUMNS = {PR_KEY,R_ID,R_Name,R_Latitude,R_Longitude};
public RLocationDatabase(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase data){
String CREATE_DB = "CREATE TABLE RGeoDbase ( " + "ID VARCHAR PRIMARY KEY, " + "Name TEXT, "
+ "Latitude DECIMAL(10,8), " + "Longitude DECIMAL(11,8) )";
data.execSQL(CREATE_DB);
}
@Override
public void onUpgrade(SQLiteDatabase data, int oldV, int newV){
data.execSQL("DROP TABLE IF EXISTS RGeoDbase");
this.onCreate(data);
}
public boolean insertRecord(String name, double latitude, double longitude){
SQLiteDatabase dbase = this.getWritableDatabase();
ContentValues values = new ContentValues();
//values.put(R_ID, r_id);
values.put(R_Name, name);
values.put(R_Latitude, latitude);
values.put(R_Longitude, longitude);
dbase.insert(TABLE_RG, null, values);
return true;
}
/*
public Cursor getData(String id){
SQLiteDatabase dbase = this.getWritableDatabase();
Cursor cursor = dbase.rawQuery("SELECT * FROM RGeoDbase WHERE Restaurant_ID="+id+"", null);
return cursor;
}*/
@SuppressWarnings("rawtypes")
public ArrayList<RDatabaseModel> getAllData(){
RDatabaseModel model = new RDatabaseModel();
ArrayList<RDatabaseModel> list = new ArrayList<RDatabaseModel>();
SQLiteDatabase dbase = this.getReadableDatabase();
Cursor cursor = dbase.rawQuery("SELECT * FROM RGeoDbase", null);
cursor.moveToFirst();
while(!cursor.isAfterLast()){
//model.setRestaurantID(cursor.getString(cursor.getColumnIndex(R_ID)));
model.setName(cursor.getString(cursor.getColumnIndex(R_Name)));
model.setLatitude(cursor.getDouble(cursor.getColumnIndex(R_Latitude)));
model.setLongitude(cursor.getDouble(cursor.getColumnIndex(R_Longitude)));
list.add(model);
cursor.moveToNext();
}
return list;
}
public void close(){
this.close();
}
}
RDatabaseModel.java
public class RDatabaseModel {
private String name;
private double latitude;
private double longitude;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
MainActivity.java
public class MainActivity extends Activity {
public static RLocationDatabase myDatabase;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myDatabase = new RLocationDatabase(this);
buildDatabase();
setContentView(R.layout.activity_main);
ArrayList<RDatabaseModel> a = myDatabase.getAllData();
RDatabaseModel rd;
for(int i=0; i<a.size(); i++){
rd = a.get(i);
System.out.println(rd.getName());
}
}
public void buildDatabase(){
if(!myDatabase.insertRecord("Bijas Vegetarian", 22.28416252, 114.13412900)){
Log.v("1", "error inserting data #1");
}
myDatabase.insertRecord("Delifrance", 22.28328514, 114.13483800);
myDatabase.insertRecord("Ebeneezer's Kebabs and Pizzeria", 22.28362400, 114.13973600);
myDatabase.insertRecord("Bay View Restaurant", 22.26952800, 114.12982000);
myDatabase.insertRecord("C.C.Canteen", 22.28003600, 114.13058000);
myDatabase.insertRecord("Cafe 330", 22.28279200, 114.13907500);
myDatabase.insertRecord("Fong Shu Chen Amenities Centre Restaurant", 22.28383400, 114.13974600);
myDatabase.insertRecord("FRU:YO Factory", 22.28270600, 114.13874000);
myDatabase.insertRecord("Garden Patio", 22.26732000, 114.12837100);
myDatabase.insertRecord("Groove Cafe", 22.28312300, 114.13485300);
if(!myDatabase.insertRecord("Ho Tim Hall Restaurant", 22.28406700, 114.13283700)){
System.out.println("error inserting data #11");
}
myDatabase.insertRecord("Maxim's Food 2", 22.28309900, 114.13949100);
myDatabase.insertRecord("Pacific Coffee Company", 22.28363500, 114.13966600);
myDatabase.insertRecord("Starbucks Coffee (Main Campus)", 22.28312100, 114.13803300);
if(!myDatabase.insertRecord("Subway Sandwiches", 22.28264100, 114.13850600)){
Log.v("15","error inserting #15");
}
myDatabase.insertRecord("Union Restaurant", 22.28315100, 114.13590700);
}
}
Upvotes: 0
Views: 340
Reputation: 730
May be you need to create your RDatabaseModel object directly in while loop.
while(!cursor.isAfterLast()){
RDatabaseModel model = new RDatabaseModel(); // here
model.setName(cursor.getString(cursor.getColumnIndex(R_Name)));
model.setLatitude(cursor.getDouble(cursor.getColumnIndex(R_Latitude)));
model.setLongitude(cursor.getDouble(cursor.getColumnIndex(R_Longitude)));
list.add(model);
cursor.moveToNext();
}
Upvotes: 1