Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Es posible crear una tabla sqlite en tiempo de ejecución basada en el número de elementos en matriz

Tengo un arraylist diferente con nombres de columna. Quiero tener un generatizado crear método que debe crear una tabla basada en el arraylist que he pasado. ¿Es posible tener una estructura con puede crear tabla dinámicamente. Por favor sugiera cualquier solución.

private static class OpenHelper extends SQLiteOpenHelper { OpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); System.out.println("openhelper1"); } @Override public void onCreate(SQLiteDatabase db) { Log.d("**DataHelper", "***********in oncreate"); db.execSQL("CREATE TABLE " + TABLE_NAME + " (username TEXT,altnum TEXT,passkey TEXT,flag TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w("Example", "Upgrading database, this will drop tables and recreate."); db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } } 

  • SQLite en Android Cómo actualizar una fila específica
  • Consultando y trabajando con Cursores en SQLite en Android
  • Cómo almacenar la imagen en la base de datos SQLite
  • ¿Cómo sincronizar bases de datos SQLite y MySQL mediante notificaciones push?
  • Cómo funciona SQLiteOpenHelper Context
  • Qué son los tipos de datos en SQLite que soportan android
  • ¿Cómo conectarse a SQLite DB con contraseña con OrmLite?
  • Establecer un valor predeterminado en una columna en SQLite
  • One Solution collect form web for “¿Es posible crear una tabla sqlite en tiempo de ejecución basada en el número de elementos en matriz”

    Creé mi propia clase para crear tablas e insertar valores de manera generatizada.

     public void createDynamicDatabase(Context context,String tableName,ArrayList<String> title) { Log.i("INSIDE createLoginDatabase() Method","*************creatLoginDatabase*********"); try { int i; String querryString; myDataBase = context.openOrCreateDatabase("Db",Context.MODE_WORLD_WRITEABLE, null); //Opens database in writable mode. //System.out.println("Table Name : "+tableName.get(0)); querryString = title.get(0)+" VARCHAR(30),"; Log.d("**createDynamicDatabase", "in oncreate"); for(i=1;i<title.size()-1;i++) { querryString += title.get(i); querryString +=" VARCHAR(30)"; querryString +=","; } querryString+= title.get(i) +" VARCHAR(30)"; querryString = "CREATE TABLE IF NOT EXISTS " + tableName + "("+querryString+");"; System.out.println("Create Table Stmt : "+ querryString); myDataBase.execSQL(querryString); } catch (SQLException ex) { Log.i("CreateDB Exception ",ex.getMessage()); } } public void insert(Context context,ArrayList<String> array_vals,ArrayList<String> title,String TABLE_NAME) { Log.d("Inside Insert","Insertion starts for table name: "+TABLE_NAME); myDataBase = context.openOrCreateDatabase("Db",Context.MODE_WORLD_WRITEABLE, null); //Opens database in writable mode. String titleString=null; String markString= null; int i; titleString = title.get(0)+","; markString = "?,"; Log.d("**createDynamicDatabase", "in oncreate"); for(i=1;i<title.size()-1;i++) { titleString += title.get(i); titleString +=","; markString += "?,"; } titleString+= title.get(i); markString += "?"; //System.out.println("Title String: "+titleString); //System.out.println("Mark String: "+markString); INSERT="insert into "+ TABLE_NAME + "("+titleString+")"+ "values" +"("+markString+")"; System.out.println("Insert statement: "+INSERT); //System.out.println("Array size iiiiii::: "+array_vals.size()); //this.insertStmt = this.myDataBase.compileStatement(INSERT); int s=0; while(s<array_vals.size()){ System.out.println("Size of array1"+array_vals.size()); //System.out.println("Size of array"+title.size()); int j=1; this.insertStmt = this.myDataBase.compileStatement(INSERT); for(int k =0;k< title.size();k++) { //System.out.println("Value of column "+title+" is "+array_vals.get(k+s)); //System.out.println("PRINT S:"+array_vals.get(k+s)); System.out.println("BindString: insertStmt.bindString("+j+","+ array_vals.get(k+s)+")"); insertStmt.bindString(j, array_vals.get(k+s)); j++; } s+=title.size(); } insertStmt.executeInsert(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.