Interrogare un db sqlite

di il
1 risposte

Interrogare un db sqlite

Buona sera ho bisogno di aiuto, ho cerato un db sqlite con 1 tabella chiamata tabellAmici e due colonne nome,cognome per il momento .
ho creato una classe DbHelper con tutti i suoi metodi, nella query estraggo tutti i dati e riesco a rimpire una listview
adesso ho bisogno di fare una ricerca per singolo dato " nome".
vi posto il mio codice della Dbhelper.public class DataBaseHelper extends SQLiteOpenHelper {



public static final String DATABASE_NAME = " listaAmici.db";
public static final String TABLE_NAME = "tabellAmici";
public static final String COL1 = "ID";
public static final String COL2 = "nomi";
public static final String COL3 = "cognome";
public static final String COL4 = "indirizzo";
public static final String COL5 = "recapito";
private SQLiteDatabase db;

public DataBaseHelper(Context context) {
super (context, "listaAmici", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL ("create table " + "tabellAmici" + "(ID INTEGER PRIMARY KEY AUTOINCREMENT ," +
"nomi TEXT," + "cognome text," + "indirizzo text," + "recapito text)")
}

// aggiorna la tabella
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL ("DROP TABLE IF EXISTS " + "tabellAmici");
onCreate (db);

}

public boolean insertData(String nome, String cognome, String indirizzo, String recapito) {
SQLiteDatabase db = this.getWritableDatabase ( );
ContentValues contentValues = new ContentValues ( );
contentValues.put (COL2, nome);
contentValues.put (COL3, cognome);
contentValues.put (COL4, indirizzo);
contentValues.put (COL5, recapito);
long result = db.insert (TABLE_NAME, null, contentValues);
db.close ( );
if (result == -1) {
return false;
} else {
return true;

}
}

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

}


}

adesso vorrei sapere come fare una query per la ricerca di nome usando la clausola where e come poi richiamarla nella main?
attraverso una text dove inserisco il nome da cercare un bottone per l'avvio della ricerca e una textbox di risultato
grazie a tutti

1 Risposte

  • Re: Interrogare un db sqlite

    Il codice va inserito tra due tag <CODE> (pulsante </> nell'editor completo del forum).
    Per i problemi di programmazione in generale ci sono le sezioni apposite a seconda del linguaggio, in questa sezione in genere si cazzeggia.
    Comunque il tuo problema parte dall'ottenere il nome su cui fare la ricerca, metterlo in un tipo String (es. trova_nome), e fare una concatenazione con
    "SELECT * FROM " + TABLE_NAME + " WHERE nome LIKE '" + trova_nome + "%'"
    Questo trova tutte le occorrenze del campo "nome" che iniziano con trova_nome. Prima di fare la concatenazione devi "sanificare" trova_nome (ad esempio sostituendo eventuali caratteri " ' " con un doppio ' ', vedi la documentazione di SQLite).
    Se vuoi fare una ricerca secca, al posto di LIKE metti '=' e togli '%'.
Devi accedere o registrarti per scrivere nel forum
1 risposte