如何在微调器中从json响应中将Valu保存到sqlite中?

时间:2016-02-16 10:15:57

标签: android json sqlite

这里我需要从服务器json响应中将值保存到sqlite中,但到目前为止我还不知道如何执行此操作: 这是我的数据库:

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;


public class Account_SF_DB extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 4;
    private static final String DATABASE_NAME = "account.db";

    public Account_SF_DB(android.content.Context context ) {

        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_TABLE_ACCOUNT= "CREATE TABLE " + Model_Account.Accunt_Table  + "("
                + Model_Account.id  + " INTEGER PRIMARY KEY AUTOINCREMENT ,"
                + Model_Account.company_groups + " TEXT, "
                + Model_Account.Parent_company + " TEXT, "
                + Model_Account.Company_name + " TEXT, "
                + Model_Account.Company_type + " TEXT ,"
                + Model_Account.Address_line1 + " TEXT ,"
                + Model_Account.Address_line2 +" TEXT ,"
                + Model_Account.Address_line3 + " TEXT ,"
                + Model_Account.State + " TEXT ,"
                + Model_Account.State_id + " INTEGER ,"
                +Model_Account.City  + " TEXT ,"
                +Model_Account.CityID + " INTEGER ,"
                +Model_Account.Pincode + " TEXT ,"
                +Model_Account.Landline1 + " TEXT ,"
                +Model_Account.Landline2 + " TEXT ,"
                +Model_Account.Url + " TEXT ,"
                +Model_Account.Email_id +" TEXT ,"
                +Model_Account.Industry + " TEXT ,"
                +Model_Account.IndustryID +  " INTEGER ,"
                +Model_Account.Account_manager+ " TEXT ,"
                +Model_Account.Account_managerid+ " INTEGER ,"
                +Model_Account.Region + " TEXT ,"
                +Model_Account.regionid + " INTEGER , "
                +Model_Account.Muti_location +" TEXT ,"
                +Model_Account.mutilocationid+ " INTEGER"
                +");";

                db.execSQL(CREATE_TABLE_ACCOUNT);


    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + Model_Account.Accunt_Table);
        onCreate(db);
    }
public void onInsert(Model_Account accountobj){
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues contentobj=new ContentValues();
    contentobj.put(Model_Account.company_groups,accountobj.getCompany_group());
    contentobj.put(Model_Account.Parent_company,accountobj.getParent_company());
    contentobj.put(Model_Account.Company_name,accountobj.getCompany_name());
    contentobj.put(Model_Account.Company_type,accountobj.getCompany_type());
    contentobj.put(Model_Account.Address_line1,accountobj.getAddrss_line1());
    contentobj.put(Model_Account.Address_line2,accountobj.getAddrss_line2());
    contentobj.put(Model_Account.Address_line3,accountobj.getAddrss_line3());
    contentobj.put(Model_Account.State,accountobj.getState());
    contentobj.put(Model_Account.State_id,accountobj.getStateid());
    contentobj.put(Model_Account.City,accountobj.getCity());
    contentobj.put(Model_Account.CityID,accountobj.getCityid());
    contentobj.put(Model_Account.Pincode,accountobj.getPincode());
    contentobj.put(Model_Account.Landline1,accountobj.getLandline1());
    contentobj.put(Model_Account.Landline2,accountobj.getLandline2());
    contentobj.put(Model_Account.Url,accountobj.getUrl());
    contentobj.put(Model_Account.Email_id,accountobj.getEmailid());
    contentobj.put(Model_Account.Industry,accountobj.getIndusty());
    contentobj.put(Model_Account.IndustryID,accountobj.getIndustry_id());
    contentobj.put(Model_Account.Account_manager,accountobj.getAccount_manager());
    contentobj.put(Model_Account.Account_managerid,accountobj.getAcm_id());
    contentobj.put(Model_Account.Region,accountobj.getRegion());
    contentobj.put(Model_Account.regionid,accountobj.getRegion_id());
    contentobj.put(Model_Account.Muti_location,accountobj.getMulti_location());
    contentobj.put(Model_Account.mutilocationid,accountobj.getMutilocation_id());
    db.insert(Model_Account.Accunt_Table,null,contentobj);
    db.close();

}  public int getTaskCount() {
        int count=0;
        String countQuery = "SELECT  * FROM " + Model_Account.Accunt_Table;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        if(cursor != null && !cursor.isClosed()){
            count = cursor.getCount();
            cursor.close();
        }
        return count;

    }
    public List<Model_Account> list(){
        String countQuery = "SELECT  * FROM " + Model_Account.Accunt_Table;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        List<Model_Account>listobj=new ArrayList<Model_Account>();
        if (cursor.moveToFirst()) {
            do  {
                Model_Account modelobj=new Model_Account();

                modelobj.setCompany_group(cursor.getString(cursor.getColumnIndex(Model_Account.company_groups)));
                modelobj.setState(cursor.getString(cursor.getColumnIndex(Model_Account.State)));
                listobj.add(modelobj);

            }while (cursor.moveToNext());
        }
        return listobj;

    }
    public void stateInsert(Model_Account modelobj){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues contentobj=new ContentValues();
        contentobj.put(Model_Account.State,modelobj.getName());
        db.insert(Model_Account.Accunt_Table, null, contentobj);
        db.close();
    }
    public List<Model_Account>spinner_state(){
        String countQuery = " SELECT   * FROM " +  Model_Account.Accunt_Table;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        List<Model_Account>listobj=new ArrayList<Model_Account>();
        if (cursor.moveToFirst()) {
            do  {
                Model_Account modelobj=new Model_Account();
                modelobj.setState(cursor.getString(cursor.getColumnIndex(Model_Account.State)));
                listobj.add(modelobj);

            }while (cursor.moveToNext());
        }
        return listobj;

    }
    }

这是我需要保存值的地方:

 String Url = "http://xx.x.x.xx/xx/AcoountCreatePageLoad.svc/Account/AccountPageLoad";
        JsonObjectRequest jsonObjRequest = new JsonObjectRequest(Request.Method.GET, Url, new JSONObject(),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        String server_response = response.toString();
                        try {
                            JSONObject json_object = new JSONObject(server_response);
                            JSONArray json_array = new JSONArray(json_object.getString("AccountPageLoadResult"));
                            for (int i = 0; i < json_array.length(); i++) {
                                Model_Account model_spinner = new Model_Account();
                                JSONObject json_arrayJSONObject = json_array.getJSONObject(i);
                                model_spinner.setName(json_arrayJSONObject.getString("Name"));
                                model_spinner.setStateid(json_arrayJSONObject.getInt("PairLinkID"));
                                account_sf_db.stateInsert(model_spinner);


                            }


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show();

                    }
                });

        //Creating request queue

        queue.add(jsonObjRequest);
       List<Model_Account> yogan=account_sf_db.spinner_state();
        final ArrayAdapter<Model_Account> spinnerAdapter = new ArrayAdapter<Model_Account>(this, android.R.layout.simple_dropdown_item_1line, yogan);

        spinner_state.setAdapter(spinnerAdapter);

但是它获取空值我需要将它保存在单独的表中或同一个表中

1 个答案:

答案 0 :(得分:0)

试试这个

savedInstanceState