I am developing an application that uses a very simple database. I only need to save one description (STRING) that is a history result of application used by user.
I have created a helper class called ScoreHelper
.
package com.example.cobaandroid;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class ScoreHelper extends SQLiteOpenHelper {
private static final int SCHEMA_VERSION = 1;
public ScoreHelper(Context context)
{
super(context,"score.db",null,SCHEMA_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
//boolean dbExist = checkDataBase();
db.execSQL("CREATE TABLE score (_id INTEGER PRIMARY KEY AUTOINCREMENT,nama VARCHAR,akurasi VARCHAR,keterangan VARCHAR);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
public Cursor getAll()
{
return(getReadableDatabase().rawQuery("SELECT _id,nama,akurasi,keterangan FROM score ORDER BY nama",null));
}
public void insert(String name,String akurasi,String keterangan)
{
SQLiteDatabase db =this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("nama", name);
cv.put("akurasi", akurasi);
cv.put("keterangan", keterangan);
db.insert("score", null, cv);
db.close();
}
}
This is my main, called Analyze.java
public class Analyze extends Activity {
Cursor model = null;
ScoreHelper scoreHelper = null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_analyze);
scoreHelper = new ScoreHelper(this);
model = scoreHelper.getAll();
final double totalAkurasi = hitungAkurasi(knn.length, knn, nama,listFileDataTest.length);
insertScoreToDB(totalAkurasi);
Button scoreHistory = (Button)findViewById(R.id.scorebutton);
scoreHistory.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent scoreIntent = new Intent(Analyze.this,CamScoreHistory.class);
startActivity(scoreIntent);
}
});
}
private void insertScoreToDB(double akurasi)
{
String dateCaptured = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
String concatDateandImg = "Image captured at " + dateCaptured;
String keterangan = "";
if(akurasi >= 83.333)
{
keterangan = "YES";
}
else
{
keterangan = "NO";
}
if(model.moveToFirst())
{
do
{
scoreHelper.insert(concatDateandImg, String.valueOf(akurasi), keterangan);
}while(model.moveToNext());
}
}
And this is the CamScoreHistory.java, the class where I want to show on a list the data in my DB
package com.example.cobaandroid;
import java.util.ArrayList;
import android.app.Activity;
import android.app.ListActivity;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class CamScoreHistory extends ListActivity {
Cursor model = null;
ScoreHelper scoreHelper = null;
String nama= "";
String akurasi="";
String keterangan="";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
scoreHelper = new ScoreHelper(this);
model = scoreHelper.getAll();
if(model.moveToFirst())
{
do
{
nama = model.getString(model.getColumnIndex("nama"));
akurasi = model.getString(model.getColumnIndex("akurasi"));
keterangan = model.getString(model.getColumnIndex("keterangan"));
}while(model.moveToNext());
}
ArrayList<String> results = new ArrayList<String>();
results.add(nama+ " Akurasi " + akurasi + " Keterangan "+keterangan);
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,results));
}
}
The problem is, I am able to insert data to my DB, but it is always overwriting the previous data. All I want is the new data that inserted not overwrite the prev one.