Labalumit
Labalumit

Reputation: 79

String SQLquery won't retrieve data from SQLite database

I have tried to retrieve data from SQL database. Before retrieve data, user must select a name in spinner. Here spinner value:

String name[] = {"Sandking","Bristleback","Sven","Tiny","Undying", "Naix","Weaver","Spectre","Lich"};   

Next, i want to use the selected name from spinner for precondition on SQLquery: I put selected name, use this method:

String nameSelected = spinner1.getSelectedItem().toString();

Last, i tried to put that string ("nameSelected") on my SQLquery

public List<String> getAllRecord(String nameSelected) { 

    List<String> namagambar = new ArrayList<String>(); 
    String selectQuery = "SELECT * FROM " + TABLE_RECORD + " WHERE "
    + HERO_NAME +"="+nameSelected; 

    database = dbHelper.getReadableDatabase(); 
    cursor = database.rawQuery(selectQuery, null); 

    if (cursor.moveToFirst()) { 

        do { 

            namagambar.add(cursor.getString(5)); 
            } while (cursor.moveToNext()); 

    } 
    database.close(); 
    return namagambar; 

}

But it did't show any data from database. Looks like I made ​​the mistake of putting a string nameSelected, is there someone who can tell my mistakes and how to fix it ?

here is my activity:

    public class help_activity extends Activity implements OnClickListener{

Spinner spinner1;
SQLiteConnector sqlConnect;
ListView lvUsers;
Button b1;



String colors[] = {"Sandking","Bristleback","Sven","Tiny","Undying", "Naix","Weaver","Spectre","Lich"}; 
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_help);


    lvUsers = (ListView) findViewById(R.id.listView1);
    b1 = (Button) findViewById(R.id.btn1);
    sqlConnect = new SQLiteConnector(this);
    addListenerOnSpinnerItemSelection();



    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_list_item_1, sqlConnect.getAllRecord(null));

    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            String nameSelected = spinner1.getSelectedItem().toString();
            if (nameSelected.equals("Sandking")) {
                lvUsers.setAdapter(adapter);
                adapter.notifyDataSetChanged();
            }
            // TODO Auto-generated method stub

        }
    });





}
public void addListenerOnSpinnerItemSelection() {
        spinner1 = (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,colors );
        spinner1.setAdapter(spinnerArrayAdapter);
      }



@Override
public void onClick(View v) {


    /*if (v == b1) {


        ArrayAdapter<String> adapter = new ArrayAdapter<String>(

                this, android.R.layout.simple_list_item_1, sqlConnect.getAllRecord()); 

        lvUsers.setAdapter(adapter);
    */
}

}

Upvotes: 0

Views: 91

Answers (1)

Phant&#244;maxx
Phant&#244;maxx

Reputation: 38098

String parameters have to be single quoted.
Anyway, you can take advantage of Android's parameter binging and let it do that for you.

Change this

String selectQuery = "SELECT * FROM " + TABLE_RECORD + " WHERE "
+ HERO_NAME +"="+nameSelected;

database = dbHelper.getReadableDatabase();
cursor = database.rawQuery(selectQuery, null);

To

String selectQuery = "SELECT * FROM " + TABLE_RECORD + " WHERE " + 
    HERO_NAME +" = ?";

database = dbHelper.getReadableDatabase();
cursor = database.rawQuery(selectQuery, new String[]{nameSelected});

Upvotes: 3

Related Questions