web-dev-qa-db-fra.com

android studio récupérer des données de la base de données SQLite et les afficher dans textview

Salut les gars s'il vous plaît j'ai besoin de votre aide. Je crée une base de données SQLite dans mon application et j'y insère les données. Et maintenant, je veux récupérer des données mais je veux juste insérer une donnée et la récupérer puis l'afficher dans un TextView.

aidez-moi s'il vous plaît c'est la première fois que j'utilise SQLite Database. 

public class Db_sqlit extends SQLiteOpenHelper{

    String TABLE_NAME = "BallsTable";

    public final static String name = "db_data";

    public Db_sqlit(Context context) {
        super(context, name, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table "+TABLE_NAME+" (id INTEGER PRIMARY KEY AUTOINCREMENT, ball TEXT)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
        onCreate(db);
    }

    public boolean insertData(String balls){
      SQLiteDatabase db = this.getWritableDatabase();
      ContentValues contentValues = new ContentValues();

      contentValues.put("ball",balls);

      long result = db.insert(TABLE_NAME,null,contentValues);
      if(result == -1){
          return false;
      }
      else
          return true;
    }

    public void list_balls(TextView textView) {

        Cursor res = this.getReadableDatabase().rawQuery("select ball from "+TABLE_NAME+"",null);
        textView.setText("");
        while (res.moveToNext()){
            textView.append(res.getString(1));
        }  
    }
}
2
Ra Isse

Voici un exemple de la façon dont j'ai réalisé cela.

Dans cet exemple, je vais store, retrieve, update et delete un nom et un âge d'élève.

D'abord créer une classe, j'ai appelé la mienne 

DBManager.Java

public class DBManager {
private Context context;
private SQLiteDatabase database;
private SQLiteHelper dbHelper;

public DBManager(Context c) {
    this.context = c;
}

public DBManager open() throws SQLException {
    this.dbHelper = new SQLiteHelper(this.context);
    this.database = this.dbHelper.getWritableDatabase();
    return this;
}

public void close() {
    this.dbHelper.close();
}

public void insert(String name, String desc) {
    ContentValues contentValue = new ContentValues();
    contentValue.put(SQLiteHelper.NAME, name);
    contentValue.put(SQLiteHelper.AGE, desc);
    this.database.insert(SQLiteHelper.TABLE_NAME_STUDENT, null, contentValue);
}


public Cursor fetch() {
    Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_STUDENT, new String[]{SQLiteHelper._ID, SQLiteHelper.NAME, SQLiteHelper.AGE}, null, null, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}

public int update(long _id, String name, String desc) {
    ContentValues contentValues = new ContentValues();
    contentValues.put(SQLiteHelper.NAME, name);
    contentValues.put(SQLiteHelper.AGE, desc);
    return this.database.update(SQLiteHelper.TABLE_NAME_STUDENT, contentValues, "_id = " + _id, null);
}

public void delete(long _id) {
    this.database.delete(SQLiteHelper.TABLE_NAME_STUDENT, "_id=" + _id, null);
    }
}

Puis créez une SQLiteOpenHelper j'ai appelé le mien

SQLiteHelper.Java

public class SQLiteHelper extends SQLiteOpenHelper {
public static final String AGE = "age";
private static final String CREATE_TABLE_STUDENT = " create table STUDENTS ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL , age TEXT );";
private static final String DB_NAME = "STUDENTS.DB";
private static final int DB_VERSION = 1;
public static final String NAME = "name";
public static final String TABLE_NAME_STUDENT = "STUDENTS";
public static final String _ID = "_id";

public SQLiteHelper(Context context) {
    super(context, DB_NAME, null, 1);
}

public void onCreate(SQLiteDatabase db) {
    Log.e("SQLITE", "table reated");
    db.execSQL(CREATE_TABLE_STUDENT);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS STUDENTS");
    onCreate(db);
}

}

AJOUTER:

Dans cet exemple, je prends le texte de EditText et lorsque le bouton est cliqué, je vérifie si EditText est vide ou non. S'il n'est pas vide et que l'étudiant n'existe pas déjà, j'insère le nom et l'âge de l'étudiant dans la base de données. J'affiche une Toast pour informer l'utilisateur du statut:

btnAdd.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (edtName.getText().toString().trim().length() == 0) {
                Toast.makeText(getApplicationContext(), "Please provide your students name", Toast.LENGTH_SHORT).show();

            } else
                try {
                    if (edtAge.getText().toString().trim().length() != 0) {

                        String name = edtName.getText().toString().trim();
                        String age = edtAge.getText().toString().trim();
                        String query = "Select * From STUDENTS where name = '"+name+"'";
                        if(dbManager.fetch().getCount()>0){
                            Toast.makeText(getApplicationContext(), "Already Exist!", Toast.LENGTH_SHORT).show();
                        }else{
                            dbManager.insert(name, age);

                            Toast.makeText(getApplicationContext(), "Added successfully!", Toast.LENGTH_SHORT).show();

                        }

                    } else {

                        Toast.makeText(getApplicationContext(), "please provide student age!", Toast.LENGTH_SHORT).show();


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


        }
    });

METTRE À JOUR:

Ici, je prends le texte dans EditText et met à jour l’étudiant lorsque le bouton est cliqué. Vous pouvez également placer les éléments suivants dans un try/catch pour vous assurer qu’il est correctement mis à jour.

btnupdate.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            String name = nameText.getText().toString();
            String age = ageText.getText().toString();

            dbManager.update(_id, name, age);
            Toast.makeText(getApplicationContext(), "Updated successfully!", Toast.LENGTH_SHORT).show();


        }
    });

SUPPRIMER:

dbManager.delete(_id);
Toast.makeText(getApplicationContext(), "Deleted successfully!", Toast.LENGTH_SHORT).show();

OBTENIR:

Ici, je récupère le nom de l’étudiant et l’affiche dans une TextView

DBManager dbManager = new DBManager(getActivity());
dbManager.open();

Cursor cursor = dbManager.fetch();
cursor.moveToFirst();
final TextView studentName = (TextView) getActivity().findViewById(R.id.nameOfStudent);
studentName.settext(cursor.getString(0));
6
HB.