Sqlite 데이터베이스에 두 개의 테이블이 있습니다. 첫 번째 표의 열은 _id
, name
입니다. 두 번째 테이블의 열은 _cid
, Category
입니다.java.lang.RuntimeException : 활동 {package_name.ActivityClass}을 (를) 시작할 수 없습니다. java.lolgalArgumentException : '_id'열이 없습니다.
SimpleCursorAdapter
을 사용하여 두 번째 테이블의 데이터를 ListView
으로 검색하고 있습니다. 로그에서 나는 RuntimeException
과 java.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
출력 :
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)
전체 로그 출력 게시 –
는 db에 열 _id가 있습니다. – ManishL
@ManishL, 네, DB에 있지만 첫 번째 테이블에는 초가 아닙니다. – PSK