Meglio mantenere la AutoComplete, ma potrei anche mettere la chiave unica...
Per il momento, cerchiamo di rimettere le mani sul database creando un'altra tabella.
Per fare questo, devo crearmi un'esercitazione sui database.
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DBHelper helper=new DBHelper(this); helper.save("Mario", "Deficiente"); Log.d("RECORD",helper.query().getString(1)+" "+helper.query().getString(2)); } class DBHelper extends SQLiteOpenHelper{ public DBHelper(Context context) { super(context, "mioDatabase", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE TABELLA(_ID INTEGER PRIMARY KEY, NOME TEXT, CATEGORIA TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public void save(String nome, String categoria){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("NOME", nome); values.put("CATEGORIA", categoria); db.insert("TABELLA", null, values); } public Cursor query(){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("SELECT * FROM TABELLA", null); crs.moveToFirst(); return crs; } }...con tanto di verifica in LogCat. Ripetuto più volte.
Adesso devo creare un'altra tabella...
Finalmente ci sono riuscito! Ho avuto grossi problemi con la gestione di ContentValues fino a quando ho trovato il metodo clear() che ha risolto la situazione:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DBHelper helper=new DBHelper(this); helper.save("Antonello","Scemo"); Log.d("RISULTATO",helper.query().getString(1)); } class DBHelper extends SQLiteOpenHelper{ public DBHelper(Context context) { super(context, "mioDatabase", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE TABELLA(_ID INTEGER PRIMARY KEY, NOME TEXT)"); db.execSQL("CREATE TABLE TABELLA2(_ID INTEGER PRIMARY KEY, CATEGORIA TEXT)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub } public void save(String nome, String categoria){ SQLiteDatabase db=this.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("NOME", nome); db.insert("TABELLA", null, values); values.clear(); values.put("CATEGORIA", categoria); db.insert("TABELLA2", null, values); } public Cursor query(){ SQLiteDatabase db=this.getWritableDatabase(); Cursor crs=db.rawQuery("SELECT * FROM TABELLA2", null); crs.moveToFirst(); return crs; } }Ed ecco il risultato:
01-10 22:32:49.126: D/dalvikvm(16447): GC_CONCURRENT freed 0K, 1% free 14249K/14368K, paused 4ms+1ms, total 7ms 01-10 22:32:49.686: D/RISULTATO(16447): Scemo 01-10 22:32:49.786: D/gralloc_goldfish(16447): Emulator without GPU emulation detected. 01-10 22:32:49.876: I/ActivityManager(1224): Displayed com.example.lab10/.MainActivity: +1s257ms (total +20m1s538ms)il dato preso dalla seconda tabella.
Ora potrei mettermi a giocherellare con le istruzioni SQL per maneggiare le tabelle...
Nessun commento:
Posta un commento