How can I insert data once Androidstudio SQLite?

1

I have the following DB manager, where I make selects, etc.

What I want to do is to enter the data once in the database.

I have already tried several times with the getCount as in the example but it does not work well.

Does anyone know how I can do it?

Thanks in advance.

package com.example.carlesmiranda.m8_tascagrups;

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

import java.util.ArrayList;

public class gestorBD extends SQLiteOpenHelper {

    public static ArrayList<String> arrayList1 = new ArrayList<>();
    public static ArrayList<String> arrayList2 = new ArrayList<>();

    public gestorBD(Context context){
        super (context, "horaris", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE horaris (id INTEGER PRIMARY KEY AUTOINCREMENT, horaSortida TEXT, horaArribada TEXT, sortida TEXT, arribada TEXT)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

    public void cargarDatos(){
        guardarHorario("8:00","8:25","Reus", "Tarragona");
        guardarHorario("9:00","9:25","Reus", "Tarragona");
        guardarHorario("10:00","10:25","Reus", "Tarragona");

        System.out.println("HA CARGADO");
    }

    private void guardarHorario(String horaSortida, String horaArribada, String sortida, String arribada) {
        SQLiteDatabase db = getWritableDatabase();
        guardarHorarios(db, horaSortida, horaArribada, sortida, arribada);
    }

    private void guardarHorarios(SQLiteDatabase db, String horaSortida, String horaArribada, String sortida, String arribada) {
        ContentValues cv = new ContentValues();
        cv.put("horaSortida", horaSortida);
        cv.put("horaArribada", horaArribada);
        cv.put("sortida", sortida);
        cv.put("arribada", arribada);
        db.insertOrThrow("horaris", null, cv);
    }

    private void comrpobarTabla(){
        SQLiteDatabase db = getWritableDatabase();
        Cursor cursor = db.rawQuery("SELECT horaSortida FROM horaris",null);



        if (cursor.getCount() > 0) {
            cargarDatos();
            System.out.println("CARGA DATOS "+cursor.getCount());
        }else{
            System.out.println("NO CARGA DATOS "+cursor.getCount());
        }

    }

    public void  obtenerHorarios(String arribadaS, String sortidaS){
        System.out.println("obtenerHorarios1");

        comrpobarTabla();

        SQLiteDatabase db = getWritableDatabase();
        Cursor cursor = db.rawQuery("SELECT * FROM horaris WHERE sortida='"+arribadaS+"' AND arribada='"+sortidaS+"'",null);

        try{
            if (cursor.moveToFirst()) {
                do{
                    String horaSortida = cursor.getString(1);
                    String horaArribada = cursor.getString(2);
                    String sortida = cursor.getString(3);
                    String arribada = cursor.getString(4);

                    arrayList1.add(horaSortida);
                    arrayList2.add(horaArribada);

                }while(cursor.moveToNext());
            }



        }catch (Exception e){
           System.out.println(e.getMessage());
        }
        db.close();

        System.out.println("obtenerHorarios2");

    }

}
    
asked by Carles Miranda 12.12.2018 в 21:20
source

2 answers

0

The data load must be done in your method public void onCreate(SQLiteDatabase db)

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE horaris (id INTEGER PRIMARY KEY AUTOINCREMENT, horaSortida TEXT, horaArribada TEXT, sortida TEXT, arribada TEXT)");
    cargarDatos(db);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

public void cargarDatos(SQLiteDatabase db){
    db.execSQL("INSERT INTO horaris VALUES('8:00','8:25','Reus', 'Tarragona')");
    db.execSQL("INSERT INTO horaris VALUES('9:00','9:25','Reus', 'Tarragona')");
    db.execSQL("INSERT INTO horaris VALUES('10:00','10:25','Reus', 'Tarragona')");

    System.out.println("HA CARGADO");
}

This if you only upload it when creating the BD

    
answered by 12.12.2018 в 21:58
-2

Have you already tried with a "SELECT * FROM"

It would be like this

db.execSQL ("INSERT INTO periodois SELECT '8:00', '8:25', 'Reus', 'Tarragona' UNION ALL SELECT '9:00', '9:25', 'Reus', 'Tarragona' ");

    
answered by 12.12.2018 в 22:06