-1

데이터베이스에있는 데이터 목록이 있습니다. 항목을 클릭하면 새로운 활동이 시작되고 나머지 항목 데이터가 textviews에 표시됩니다. 이 내 코드입니다 :데이터베이스에서 텍스트를 textviews로 설정

userList.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { 
      Cursor c = dataBase.rawQuery("SELECT FROM" 
       +DbHelper.TABLE_NAME+"WHERE"+DbHelper.KEY_ID+"="+arg3, null); 
      Intent i = new Intent(getApplicationContext(),BookDetails.class); 
      startActivity(i); 
      t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_NAME))); 
      t2.setText(c.getString(c.getColumnIndex(DbHelper.KEY_AUTHOR))); 
      t3.setText(c.getString(c.getColumnIndex(DbHelper.KEY_ISBN))); 
      t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_COPIES))); 
      t1.setText(c.getString(c.getColumnIndex(DbHelper.KEY_INFO))); 
     } 
    });} 

하지만 난 응용 프로그램이 중지됩니다 항목 종료를 클릭하면이 ... 작동하지 않았다! 누군가 나를 도와 드릴까요? 이 작업을 수행하는 것보다 더 나은 방법이 있습니까 ??

는 (+ "")) c.getString (c.getColumnIndex (DbHelper.KEY_NAME) 당신에게

답변

0

t1.setText 감사합니다; 또는 t1.setText (c.getString (c.getColumnIndex (DbHelper.KEY_NAME)). toString());

+0

두 가지를 시도했지만 작동하지 않음 :(다른 제안? –

+0

DbHElper는 괜찮습니까? – mohsen

+0

네, 정상적으로 작동합니다. –

0

"강제 닫기"문제에 관해서는 logcat의 예외 스택 추적을 포함하십시오. 당신은 당신이 선택하고 열을 지정해야합니다

Cursor c = dataBase.rawQuery("SELECT FROM" 
+DbHelper.TABLE_NAME+"WHERE"+DbHelper.KEY_ID+"="+arg3, null); 
  • :

    예외의 원인이됩니다 여기에 SQL 구문에 문제가 있습니다. SELECT * 모든 열을 선택하려면 FROMWHERE과 같은 키워드와 테이블 또는 열 이름과 같은 식별자 사이에 공백이 있어야합니다.

  • ? 변수 바인딩을 쿼리에서 하드 코딩하는 대신 사용하는 것이 좋습니다.

그래서,이 같은 :

Cursor c = dataBase.rawQuery("SELECT * FROM " 
+DbHelper.TABLE_NAME+" WHERE "+DbHelper.KEY_ID+"=?", new String[] { arg3 }); 

또한 두 번 t1의 텍스트를 덮어하고 있습니다. 하지만 예외가 발생하지는 않습니다.

관련 문제