I have trouble while trying insert value to sqlite on android.
This is the preview of the code
....
public class CreateSoal extends Activity{
final DbHelper db=new DbHelper(this);
public void onCreate(Bundle savedInstanceState) {
...
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
BuatSoal();
}
});
}
public void BuatSoal(){
String Nama = "Anonymous";
SimpleDateFormat df = new SimpleDateFormat("dd MMMM yyyy HH:mm:ss");
Calendar kalender=Calendar.getInstance();
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
String date = df.format(kalender.getTime());
kalender.set(Calendar.MINUTE, kalender.get(Calendar.MINUTE)+90);
String End = df.format(kalender.getTime());
try
{
db.addSoal(new Soal(Nama, date, ts, End, "ON")); //this get java.lang.NullPointerException; and addSoal function is work fine
// db.addSoal(new Soal("Nama", "date", "ts", "End", "ON")); <-- i tried to insert dump data, and still get
}
catch (Exception ex)
{
int twk = db.rowcount("TWK",""); //this one is work
Toast.makeText(getApplicationContext(), "cannot update " + twk, Toast.LENGTH_SHORT).show();
}
...
/*
when i try to show it in toast like:
Toast.makeText(this, twk + " \n NAMA: " + Nama + " \n Date: " + date + " \n End: " + End + " \n TS: \n" + ts , Toast.LENGTH_LONG).show();
it's show all the value of twk, Nama, date, End, & ts
*/
}
}
my database:
public class DbHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 5;
// Database Name
private static final String DATABASE_NAME = "TKD";
// tasks table name
private static final String TABLE_TWK = "TWK";
private static final String TABLE_SOAL = "Soal";
...
private static final String KEY_ID = "_id";
// tasks Table Columns names
private static final String KEY_QUES = "question";
private static final String KEY_ANSWER = "answer"; //correct option
private static final String KEY_OPTA= "opta"; //option a
private static final String KEY_OPTB= "optb"; //option b
private static final String KEY_OPTC= "optc"; //option c
private static final String KEY_OPTD= "optd"; //option d
private static final String KEY_OPTE= "opte"; //option e
//soal (tambah _id)
private static final String Key_NAMA = "NAMA";
private static final String Key_TIME = "TIME"; // format(dd MMMM yyyy HH:mm:ss)
private static final String Key_TS = "TS"; // timestamp
private static final String Key_END = "END"; // end time
private static final String Key_STATUS = "STATUS";
private SQLiteDatabase dbase;
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
dbase=db;
String sql_TWK = "CREATE TABLE IF NOT EXISTS " + TABLE_TWK + " ( "
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ KEY_QUES + " TEXT, "
+ KEY_ANSWER + " TEXT, "
+ KEY_OPTA + " TEXT, "
+ KEY_OPTB + " TEXT, "
+ KEY_OPTC + " TEXT, "
+ KEY_OPTD + " TEXT, "
+ KEY_OPTE + " TEXT)";
db.execSQL(sql_TWK);
String sql_soal = "CREATE TABLE IF NOT EXISTS " + TABLE_SOAL + " ( "
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ Key_NAMA + " TEXT, "
+ Key_TIME + " TEXT, "
+ Key_TS + " TEXT, "
+ Key_END + " TEXT, "
+ Key_STATUS + " TEXT)";
db.execSQL(sql_soal);
addQuestions_TWK();
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
this.addSoal(new Soal("Nama", "date", ts, "End", "OFF")); //this one is work
...
}
...
public void addSoal(Soal soal){
ContentValues values = new ContentValues();
values.put(Key_NAMA, soal.getNAMA());
values.put(Key_TIME, soal.getTIME());
values.put(Key_TS, soal.getTS());
values.put(Key_END, soal.getEND());
values.put(Key_STATUS, soal.getSTATUS());
dbase.insert(TABLE_SOAL, null, values);
}
public int rowcount(String table, String Con)
{
int row=0;
String selectQuery = "";
selectQuery = "SELECT * FROM " + table + " " + Con;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
row=cursor.getCount();
return row;
}
....
rowcount is work, but addSoal didn't. did i miss something that cause me get NullPointerException?
error log:
08-07 03:45:04.738: E/AndroidRuntime(4562): FATAL EXCEPTION: main
08-07 03:45:04.738: E/AndroidRuntime(4562): java.lang.NullPointerException
08-07 03:45:04.738: E/AndroidRuntime(4562): at com.tidakdijual.tkdcpns1.db.DbHelper.addSoal(DbHelper.java:217)
08-07 03:45:04.738: E/AndroidRuntime(4562): at com.tidakdijual.tkdcpns1.soal.CreateSoal.BuatSoal(CreateSoal.java:105)
08-07 03:45:04.738: E/AndroidRuntime(4562): at com.tidakdijual.tkdcpns1.soal.CreateSoal$1.onClick(CreateSoal.java:69)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.view.View.performClick(View.java:4240)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.view.View$PerformClick.run(View.java:17721)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.os.Handler.handleCallback(Handler.java:730)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.os.Handler.dispatchMessage(Handler.java:92)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.os.Looper.loop(Looper.java:137)
08-07 03:45:04.738: E/AndroidRuntime(4562): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-07 03:45:04.738: E/AndroidRuntime(4562): at java.lang.reflect.Method.invokeNative(Native Method)
08-07 03:45:04.738: E/AndroidRuntime(4562): at java.lang.reflect.Method.invoke(Method.java:525)
08-07 03:45:04.738: E/AndroidRuntime(4562): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-07 03:45:04.738: E/AndroidRuntime(4562): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-07 03:45:04.738: E/AndroidRuntime(4562): at dalvik.system.NativeStart.main(Native Method)
08-07 03:45:09.658: E/ActivityThread(4607): Failed to find provider info for com.google.plus.platform
PROBLEM SOLVED. see Ando Masahashi's comment or laalto's comment