2 votes

Créer des tables sqlite de façon dynamique

Mon code crée une table sqlite qui enregistre les données d'entrée en cliquant sur le bouton d'ajout, ce que je veux faire, c'est que chaque fois que je clique sur le bouton NewTab une nouvelle table sera créée, j'ai cherché partout et j'ai essayé sharedpreferences aussi pour faire un nom différent des tables rien ne m'a aidé, quelqu'un peut-il m'aider plz et merci.

public class MyDBHandler extends SQLiteOpenHelper{
public static final String DATABASE_NAME = "Shopping.db";
public static final String TABLE_NAME = "Main_table";

public static final String COL_2 = "NAME";
public static final String COL_3 = "PRICE";

public MyDBHandler(Context context) {
    super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PRICE 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 name,String price) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_2,name);
    contentValues.put(COL_3,price);
    long result = db.insert(TABLE_NAME,null ,contentValues);
    if(result == -1)
        return false;
    else
        return true;
}

public Cursor getAllData() {
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
    return res;
}

}

MainActivty

    btnAddData.setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        MyDBHandler myDb = new MyDBHandler(MainActivity.this);
                        boolean isInserted = myDb.insertData(editName.getText().toString(), null);
                        if (isInserted == true) {
                            Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
                            Cursor res = myDb.getAllData();

                            while (res.moveToNext()) {
                                final TextView textView = new TextView(MainActivity.this);

                                String valor1 = "<p style='font-family:verdana'>" + a + "</p> ";
                                textView.setText(Html.fromHtml(valor1));
                                lin.addView(textView);

                            }

                        } else {
                            Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show();
                        }
                    }
                }
        );

0voto

seven_seas Points 287

Faites une variable que vous sauvegardez via sharedPreferences C'est votre table count puis créer une base de données sql et ensuite faire

SQLDATABASENAME.execSql("CREATE TABLE Table" + your_counter_variable_ + " #create rows here ;");

0voto

seven_seas Points 287

Vous pouvez également utiliser l'heure réelle, de cette façon vous obtiendrez un identifiant unique pour toutes les tables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X