내가SimpleCursorAdapter 올바른 값을 반환하면서 실패로
SimpleCursorAdapter
의 사용과 오랜 시간의 한 지점, 즉에 부착되어 사용하기 어려운되고 있습니다. 나는 오히려 내가에서 onCreate (..)에서
db.rawQuery(String,String)
내 코드를 어떻게해야 내가 커서 데이터베이스 쿼리에 _id 컬럼을 추가해야한다는, SO 자체가 유사한 많은 게시물을 볼
HospitalData = new Database(this);
HospitalData.open();
Cursor c = HospitalData.getAllRows_Patient_Db();
startManagingCursor(c);
c.moveToFirst();
//HERE SOME LOOP IS NEEDED FOR TRAVERSING AND PUTTING IN THE LISTVIEW
while(c.isAfterLast() == false)
{
String[] columns = new String[] { c.getString(1), c.getString(2) };
int[] to = new int[] { R.id.room_number_db, R.id.pt_initial_db };
adapter = new SimpleCursorAdapter(this,R.layout.patient_db, c,columns,to);
c.moveToNext();
}
setListAdapter(adapter);
입니다했다
을 다음과 같이 KEY_ROWID가 정의
public Cursor getAllRows_Patient_Db()
{
return db.query(DATABASE_PATIENT_TABLE, new String[] {KEY_ROWID, KEY_ROOM_NUMBER,
KEY_PATIENT_INITIAL
},
null,
null,
null,
null,
null);
}
을 다음과 같이
그리고 이전에 내 데이터베이스를 액세스하는 코드였다
public static final String KEY_ROWID = "_id";
그리고이 함께 오류가 여기에
07-04 22:10:23.301: ERROR/AndroidRuntime(16795): Caused by: java.lang.IllegalArgumentException: column '90' does not exist
07-04 22:10:23.301: ERROR/AndroidRuntime(16795): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
07-04 22:10:23.301: ERROR/AndroidRuntime(16795): at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
열 (90)가 열 ID가 아니라 내 데이터베이스에 따라 cursor.getString (1)에 저장된 데이터입니다,하지만 난 여기가하려고 생각입니다 검색 커서 .getString (0)은 행 ID입니다.
나중에
public Cursor getAllRows_Patient_Db()
{
String db_sel = "SELECT id as _id, KEY_ROOM_NUMBER" +
",KEY_PATIENT_INITIAL FROM DATABASE_PATIENT_TABLE";
return db.rawQuery(db_sel,null);
}
를 다음과 같이 내 코드를 변경하지만 아직도 내가 오류가 발생하고,이 시간 오류가 도와주세요, 나는 아주 긴 시간에서 함께 붙어 있어요
07-04 21:36:12.510: ERROR/global(9861): Deprecated Thread methods are not supported.
07-04 21:36:12.950: ERROR/AndroidRuntime(9861): FATAL EXCEPTION: main
07-04 21:36:12.950: ERROR/AndroidRuntime(9861): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pro/com.pro.CopyOfFirstScreen}: android.database.sqlite.SQLiteException: no such table: DATABASE_PATIENT_TABLE: , while compiling: SELECT id as _id, KEY_ROOM_NUMBER,KEY_PATIENT_INITIAL FROM DATABASE_PATIENT_TABLE
07-04 21:36:12.950: ERROR/AndroidRuntime(9861): Caused by: android.database.sqlite.SQLiteException: no such table: DATABASE_PATIENT_TABLE: , while compiling: SELECT id as _id, KEY_ROOM_NUMBER,KEY_PATIENT_INITIAL FROM DATABASE_PATIENT_TABLE
다르다! !
편집 : 자 이제 너희들은 내 쿼리 문이 정확하고 주셔서 감사합니다, 나는 내가 데이터베이스 쿼리 구문을 이해하는 좋은하지 않다 죄송하지만
작업 쿼리 후를 배우려고 노력하고 도움을 변경
String db_sel = "SELECT _id as _id, room_number" +",patient_initial FROM " + DATABASE_PATIENT_TABLE;
는 사실 내가 키 값
public static final String KEY_ROWID = "_id";
public static final String KEY_ROOM_NUMBER = "room_number";
public static final String KEY_PATIENT_INITIAL = "patient_initial";
하지만 지금이 아닌 또 다른 문제를 참조로 선언 된 문자열을 변경했다입니다 쿼리 문하지만 길에서 내가 액세스하거나 내 표는 2 행과 3 열을 가지고 볼 수 있듯이 simplecursorAdapter
를 사용하고, 지금은 2 열 및 3 열에서 데이터를 가져 오려는 내 listview에 넣어. 그러나 쿼리 수정 후 내가 다른 오류를 얻고있다 (SimpleCursorAdapter
은 원래는String[] columns = new String[] {c.getString(1), c.getString(2) };
int[] to = new int[] { R.id.room_number_db, R.id.pt_initial_db };
adapter = new SimpleCursorAdapter(this,R.layout.patient_db, c,columns,to);
c.moveToNext();
setListAdapter(adapter);
이고 오류가
07-05 21:32:29.228: ERROR/AndroidRuntime(1505): Caused by: java.lang.IllegalArgumentException: column '90' does not exist
07-05 21:32:29.228: ERROR/AndroidRuntime(1505): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
07-05 21:32:29.228: ERROR/AndroidRuntime(1505): at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
android.widget.SimpleCursorAdapter.findColumns
했다.자바 : 당신이 int x = 0;
String[] columns = new String[] { c.getString(0),c.getString(1), c.getString(2) };
int[] to = new int[] { x, R.id.room_number_db, R.id.pt_initial_db };
adapter = new SimpleCursorAdapter(this,R.layout.patient_db, c,columns,to);
c.moveToNext();
setListAdapter(adapter);
이 단지했다 나는 내 코드에서 변경 한 이후 행
접근의 첫 번째 열 inspite의 데이터에 액세스하려고 볼 수 있듯이 312)
SimpleCursorAdapter이 정상 커서에 비해 작품과 내가 오류가 나는 유을이 질문이 너무 오래 :-(되고 알고
07-05 21:34:47.947: ERROR/AndroidRuntime(1966): Caused by: java.lang.IllegalArgumentException: column '1' does not exist
07-05 21:34:47.947: ERROR/AndroidRuntime(1966): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
얼마나 다르게 찾기 위해 생각 여기에서 몇 가지 코드를 삭제하라고 제안합니다.
android.database.sqlite.SQLiteException: no such table: DATABASE_PATIENT_TABLE:
:
. 표준 DatabaseHelper를 사용하지 않는 이유가 있습니까? – Estel
데이터베이스를 만들기 위해 DatabaseHelper를 사용했습니다. 이전에 내 질문이 명확하지 않았을 수 있습니다. 나는 내가 전에 얻었던 오류를 추가했다. 그것을보고, 만일 가능하다면 나에게 친절히 안내한다. –