jeudi 23 avril 2015

Android json parse and store into database

I am making an app which have a database and now I am trying to store the data using this method and getting error javanullpointer,

JSONParser jParser = new JSONParser();
                    JSONObject json = jParser.getJSONFromUrl(url);
                        // TODO Auto-generated method stub


                        JSONArray Erate= json.getJSONArray("Erates");
                        if(Erate!=null)
                        {

                        // looping through All Contacts
                        for(int i = 0; i < Erate.length(); i++){
                            JSONObject c = Erate.getJSONObject(i);
                            Cursor cr = db.rawQuery("select * from `rates` where `id`='"+c.getString("id")+"'",null);

                                String quiery=
                            "Insert into rates(id,kondisi,condition,tenor,erate,erateDB)"+
                            "values("+
                            c.getString("id")+",'"+

                            c.getString("....")
                            +"')";
                                db.execSQL(quiery);
                            Log.d("Insert",quiery);

                            cr.close();}
                        }

and then i try another method (this also give the same error)

          for (int i = 0; i < Erates.length(); i++) {
                    JSONObject c = Erates.getJSONObject(i);
                int id = c.getInt(TAG_ER_ID);
                    int tenor = c.getInt(TAG_ER_TENOR);
                    String ko = c.getString(TAG_ER_K);
                    String co = c.getString(TAG_ER_C);
                    double rate = c.getDouble(TAG_ER_RATE);
                    double ratedb = c.getDouble(TAG_ER_RATE_DB);

                    Log.d("Response test: ", id + "\n" + tenor + "\n" + ko
                            + "\n" + co + "\n" + rate + "\n" + ratedb);
                    /**
                     * Updating parsed JSON data into db
                     * */
                    db.saveEntryEffectiveRate(id, tenor,ko,co,
                     rate,ratedb);
                }

saveEntryEffectiveRate in the database:

public void saveEntryEffectiveRate(int id, int tenor,String ko,String co, double rate,
            double ratedb) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues valuesER = new ContentValues();
        valuesER.put(KEY_ER_ID, id);
        valuesER.put(KEY_ER_TENOR, tenor);
        valuesER.put(KEY_ER_KO, ko);
        valuesER.put(KEY_ER_CO, co);
        valuesER.put(KEY_ER_RATE, rate);
        valuesER.put(KEY_ER_RATE_DB, ratedb);
        db.insert(TABLE_EFFECTIVE_RATE, null, valuesER);
    }

UPDATE: logcat:

04-23 16:44:14.044: E/AndroidRuntime(6752): FATAL EXCEPTION: main
04-23 16:44:14.044: E/AndroidRuntime(6752): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{http://ift.tt/1HvhjPo}: java.lang.NullPointerException
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.os.Looper.loop(Looper.java:123)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread.main(ActivityThread.java:3647)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at java.lang.reflect.Method.invokeNative(Native Method)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at java.lang.reflect.Method.invoke(Method.java:507)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at dalvik.system.NativeStart.main(Native Method)
04-23 16:44:14.044: E/AndroidRuntime(6752): Caused by: java.lang.NullPointerException
04-23 16:44:14.044: E/AndroidRuntime(6752):     at http://www.mandiritunasfinancemobile.co.id.a1s2d3f4g5h6j7k8l9.p0.comcom.MainActivity.<init>(MainActivity.java:55)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at java.lang.Class.newInstanceImpl(Native Method)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at java.lang.Class.newInstance(Class.java:1409)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
04-23 16:44:14.044: E/AndroidRuntime(6752):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
04-23 16:44:14.044: E/AndroidRuntime(6752):     ... 11 more

i declare the database inside the mainclass which will doing the parsing and storing with DatabaseMaster2 db; database master is the name of database class which extends sqliteopenhelper

i put log to make sure the parsing is successfully done. And it is. Any suggestion about storing data into a database?

Aucun commentaire:

Enregistrer un commentaire