2014-04-19 3 views
0

SQL 데이터베이스에서 데이터를 검색하려고했습니다. 데이터를 검색하기 전에 사용자가 회 전자에서 이름을 선택해야합니다. 여기 스피너 값 : 나는이 방법을 사용, 이름을 선택 넣어 :문자열 SQLquery가 SQLite 데이터베이스에서 데이터를 검색하지 않습니다.

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

다음, 난은 SQLQuery에 전제 조건에 대한 스피너에서 선택한 이름을 사용하려는

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

마지막을 내가하려 내은 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; 

} 

에 해당 문자열 ("nameSelected")를 넣어하지만 데이터베이스에서 데이터를 표시 did't. 문자열 이름을 넣는 실수를 한 것처럼 보입니다. 선택했는데 내 실수를 고칠 수있는 사람이 있습니까?

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); 
    */ 
} 

} 
+0

하려면 작은 따옴표를 추가하는 것을 잊었다 :.'= ' "+ nameSelected +"' "'이런 이유로 당신은 매개 변수화 제표 및 원시하지를 사용해야합니다 문은 이러한 오류를 방지 할 수 있습니다. – Sajmon

+0

덕분에, 내가 – Labalumit

답변

3

문자열 매개 변수를 인용 한 수 있습니다

여기 내 활동이다.
어쨌든 안드로이드의 매개 변수 빙빙을 이용하여 그렇게 할 수 있습니다.

변경이

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

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

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

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

그것을 시도하고 공개 목록 getAllRecord (문자열 colorSelected)에 것, 내가 "문자열 colorSelected"를 삭제하거나하지 않겠습니까? – Labalumit

+0

당신이'공공 목록 GE는 뜻 tAllRecord (String nameSelected)'? 아니, 그대로 두십시오. 그렇지 않으면 WHERE 절에 사용 된 nameSelected 매개 변수를 전달할 수 없습니다. –

+0

나는 그것을 시도했지만 오류 메시지가 표시된다. '인덱스 1의 바인드 값은 null입니다. android' whats going? – Labalumit

관련 문제