2012-11-01 5 views
6

Ciao a tutti Im un principiante Androidian, e mi piacerebbe un po 'di aiuto con questo?Android :: SQLite, non è stata trovata una colonna di questo tipo?

android.database.sqlite.SQLiteException: tale colonna: asd:, durante la compilazione: DELETE FROM WHERE name = etichette asd

questo è il rivestimento di errore del mattino, ed ecco il codice:

questo è il metodo nella DBHelper:

/** 
* Delete a label table 
* */ 
public void deleteLabel(String label) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    // ContentValues values = new ContentValues(); 
    // values.remove(label); 

    // Deleting Row 
    db.delete(TABLE_LABELS, KEY_NAME + "=" + label, null); 
    db.close(); // Closing database connection 
} 

ed ecco il codice di attività principale che invocare il metodo:

// for spinner onItemListener 
// and here is what label is 

final String label = parent.getItemAtPosition(position).toString(); 

Button dialogDeletelButton = (Button) dialog 
       .findViewById(R.id.deleteButton); 
     dialogDeletelButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // database handler 
       DatabaseHandler db = new DatabaseHandler(
         getApplicationContext()); 

       // inserting new label into database 
       db.deleteLabel(label); 

       // Hiding the keyboard 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(inputLabel.getWindowToken(), 0); 

       // loading spinner without the deleted data 
       loadSpinnerData(); 

      } 
     }); 

risposta

13

Devi quasi certamente citare 'asd' (cioè la variabile label nel tuo codice). Se è quotato, è una stringa da confrontare con la colonna name.

Se è non quotato, SQL lo considera semplicemente come un altro nome di colonna.

Si potrebbe fare questo nella vostra attività con:

db.deleteLabel ("'" + label + "'"); 

ma può essere più pulito per modificare la funzione di supporto:

db.delete (TABLE_LABELS, KEY_NAME + "='" + label + "'", null); 

in quanto sembra che si consiglia di fare qualcosa con la etichetta non quotata a un certo punto (il materiale ContentValues attualmente commentato).

+1

Grazie mille, funziona ora. – Tayseer

+0

Puoi per favore controllare questo se puoi: http://stackoverflow.com/questions/13178056/android-get-data-from-another-activity – Tayseer

+0

Il "è un assassino del tempo" – playmaker420