2013-02-26 1 views
0

Sqlite 데이터베이스에 두 개의 테이블이 있습니다. 첫 번째 표의 열은 _id, name입니다. 두 번째 테이블의 열은 _cid, Category입니다.java.lang.RuntimeException : 활동 {package_name.ActivityClass}을 (를) 시작할 수 없습니다. java.lolgalArgumentException : '_id'열이 없습니다.

SimpleCursorAdapter을 사용하여 두 번째 테이블의 데이터를 ListView으로 검색하고 있습니다. 로그에서 나는 RuntimeExceptionjava.IllegalArgumentException: column '_id' does not exist을 본다.

활동 :

public class ActivityClass extends ListActivity{ 

private CursorAdapter curCateAdapter; 
private ListView cateListview; 
SimpleCursorAdapter adapter;  
@SuppressWarnings("deprecation") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    cateListview=getListView(); 
    final DatabaseConnector database = new DatabaseConnector(NoteCategoryActivity.this); 
    Cursor myCursor=database.getAllCategory(); 
    String[] from = new String[] {"Category"}; 
    int[] to = new int[] { R.id.cateTextView }; 
    adapter= new SimpleCursorAdapter(this, R.layout.category_list, 
        myCursor, 
        from, to); 
    cateListview.setAdapter(adapter); 
} 
} 

DatabaseHelper 클래스 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/cateTextView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="18sp" 
     android:gravity="center_vertical" 
     /> 
</RelativeLayout> 

logcat 출력 :

,369

public class DatabaseHelper { 

private static final String DB_NAME = "NameDB.db"; 
private static final String TABLE_NAME1 = "table1"; 
private static final String TABLE_NAME2 = "Categories"; 
private static final String KEY_ID="_id"; 
private static final String KEY_NAME="Name"; 
public static final String KEY_NCID="_cid"; 
public static final String KEY_CAT="Category"; 
private SQLiteDatabase database; 
private DatabaseOpenHelper dbOpenHelper; 

    public Cursor getAllCategory() { 
    database=dbOpenHelper.getWritableDatabase(); 
    Cursor mCursor =database.query("Categories", new String[]{"_cid","Category"}, null, null, null, null, null); 
    if (mCursor != null) { 
mCursor.moveToFirst(); 
      } 
    return mCursor; 
} 

category_list.xml, 나는이 파일에 사용 된 RelativeLayout을 정의

02-26 15:17:35.729: E/AndroidRuntime(17757): FATAL EXCEPTION: main 
02-26 15:17:35.729: E/AndroidRuntime(17757): java.lang.RuntimeException: Unable to start activity ComponentInfo{packagename.MyActivity}: java.lang.IllegalArgumentException: column '_id' does not exist 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.os.Handler.dispatchMessage(Handler.java:99) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.os.Looper.loop(Looper.java:123) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at android.app.ActivityThread.main(ActivityThread.java:3683) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at java.lang.reflect.Method.invoke(Method.java:507) 
02-26 15:17:35.729: E/AndroidRuntime(17757):at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at dalvik.system.NativeStart.main(Native Method) 
02-26 15:17:35.729: E/AndroidRuntime(17757): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.widget.CursorAdapter.init(CursorAdapter.java:111) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.widget.CursorAdapter.<init>(CursorAdapter.java:90) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.widget.ResourceCursorAdapter.<init>(ResourceCursorAdapter.java:47) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:84) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at intuition.itlabs.app.makenotes.MyActivity.onCreate(NoteCategoryActivity.java:39) 
02-26 15:17:35.729: E/AndroidRuntime(17757): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
+0

전체 로그 출력 게시 –

+0

는 db에 열 _id가 있습니다. – ManishL

+0

@ManishL, 네, DB에 있지만 첫 번째 테이블에는 초가 아닙니다. – PSK

답변

1

SimpleCursorAdapter는 제대로 작동하려면 _id 열이 있어야합니다. 데이터를 선택할 때 ID 열의 별칭을 지정해야합니다 ("_cid as _id"). Use google.

+0

감사합니다 @Leonidos는 효과가 없습니다 나를. – PSK