Autore Topic: rawQuery, non recupera variabile  (Letto 95 volte)

Offline enecco

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: 0
    • Mostra profilo
rawQuery, non recupera variabile
« il: 14 Novembre 2016, 10:16:30 CET »
0
ciao a tutti non riesco a recuperare il contenuto di una variabile +classi che mando da questa activity in questo modo

Codice (Java): [Seleziona]
 
public void onItemClick(AdapterView<?> parent, View view, int position, long viewId) {

                Intent intent = new Intent(ListClasseActivity.this, ListAlunniCompletaActivity.class);
                intent.putExtra("Anno", anno);
                //recupero il nome 'PrimaAMeccanici'
                intent.putExtra("Classi", adapter.getItem(position));
                startActivity(intent);
}

in questa query della seconda activity

[code=java]

public class ListCompletaActivity extends AppCompatActivity {

   
    private TextView tvView2;
    private ListView listView;
    ArrayList<String> arrayList = new ArrayList<String>();
    ArrayAdapter<String> adapter;
    SQLiteDatabase db;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_alunni_completa_activity);

        tvView2 = (TextView) this.findViewById(R.id.classe);
        String classi = intent.getStringExtra("Classi");
        tvView2.setText("Classe: " + classi);

        listView = (ListView) findViewById(R.id.list_view);
        db=openOrCreateDatabase("NOMEDATABASE.DB", Context.MODE_PRIVATE, null);
        Cursor cursor = db.rawQuery("SELECT * FROM ANNO"+anno+" WHERE classi = "+classi, null);

l'errore che mi restituisce è il seguente:

android.database.sqlite.SQLiteException: no such column: PrimaAMeccanici (code 1): , while compiling: SELECT * FROM ANNO2016 WHERE classi = PrimaAMeccanici

se provo a scrivere direttamente il contenuto nella query in questo modo inserendo tra apici 'PrimaAMeccanici', funziona bene?!? c'è qualche errore di sinstassi?
Codice (Java): [Seleziona]
Cursor cursor = db.rawQuery("SELECT alunni, classi FROM ANNO"+anno+ " WHERE classi = 'PrimaAMeccanici'", null);

Post unito: 14 Novembre 2016, 10:43:22 CET
ho risolto così:

Cursor cursor = db.rawQuery("SELECT * FROM ANNO"+anno+" WHERE classi = " +"'"+classi+"'", null);
« Ultima modifica: 14 Novembre 2016, 10:43:22 CET da enecco, Reason: Merged DoublePost »

Offline capitancooker

  • Utente junior
  • **
  • Post: 56
  • Marco
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5, Asus Zenpad S 8.0
  • Sistema operativo:
    Mac OSX El Capitan
Re:rawQuery, non recupera variabile
« Risposta #1 il: 14 Novembre 2016, 14:13:34 CET »
0
PrimaAMeccanici va messa tra apici e quindi la riga andrebbe corretta così:
Codice (Java): [Seleziona]
 Cursor cursor = db.rawQuery("SELECT * FROM ANNO"+anno+" WHERE classi = '"+classi+"'", null);
Ma la convenzione prevede che i parametri vengano inseriti in un array quindi il modo più ortodosso sarebbe questo:

Codice (Java): [Seleziona]
 Cursor cursor = db.rawQuery("SELECT * FROM ANNO"+anno+" WHERE classi = ?", new String[]{classi});
Ciao,
Marco
Se sbaglio, correggetemi.