sql >> Database >  >> RDS >> SQLite

Android SQLiteDB is niet klaar met het toevoegen van waarden

Ik heb dit opgelost door een IntentService te maken met een AsyncTask erin en deze binnen onPause aan te roepen. Het werkt nu foutloos. Hier is de code in onPause:

    Intent saveIntent = new Intent(this, SaveService.class);
    startService(saveIntent); 

En hier is mijn SaveService-klasse:

public class SaveService extends IntentService
{
    private ArrayList<Ingredient> ingredientsArray;
    private ArrayList<Unit> unitsArray;
    private DatabaseHelper dbHelper;

    public SaveService(String name) 
    {
        super(name);
    }

    public SaveService() 
    {
        super("SaveService");
    }

    @Override
    protected void onHandleIntent(Intent intent) 
    {
        //save data to database
        dbHelper = new DatabaseHelper(getApplicationContext());
        ingredientsArray = QuickBakeConverterPro.ingredients;
        unitsArray = QuickBakeConverterPro.units;

        new SaveAllTask().execute();
    }

    private class SaveAllTask extends AsyncTask<Void, Void, Void>
    {
        @Override
        protected Void doInBackground(Void... args) 
        {
            //open database
            try 
            {
                dbHelper.openDatabase();
            }catch(SQLException sqle)
            {    
                throw sqle;  
            }

            dbHelper.deleteAll();

            //add all ingredients & units
            for (int i = 0; i < ingredientsArray.size(); i++)
                dbHelper.addIngredient(ingredientsArray.get(i));
            for (int i = 0; i < unitsArray.size(); i++)
                dbHelper.addUnit(unitsArray.get(i));

            dbHelper.close();

            return null;
        }
    }//SaveAllTask
}//class SaveService



  1. Hoe te repareren "De selectielijst voor de INSERT-instructie bevat minder items dan de invoeglijst"

  2. Oracle Database Link - MySQL-equivalent?

  3. Meest populaire databasebeheersystemen ter wereld

  4. Een gekoppelde server beperken tot een enkele lokale aanmelding (T-SQL-voorbeeld)