gpt4 book ai didi

java - android 数据库中我缺少的列在哪里?

转载 作者:行者123 更新时间:2023-12-01 12:09:33 25 4
gpt4 key购买 nike

我是 Android 语言新手。我的 SQLite 数据库缺少一列,但我不知道它在哪里。

logcat 返回 sqlite 返回:

12-07 01:38:03.337: E/AndroidRuntime(1218): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myrecordapps/com.example.myrecordapps.Subject}: java.lang.IllegalArgumentException: column '_id' does not exist

当我尝试访问主题时,无法访问我的 Activity 。我在主题中使用 listView 来显示表中插入的所有数据。错误告诉我是我的数据库问题。

有人可以帮忙吗?

编码如下:主题.java

DBHandlerCourse adapter_ob;
DBHelperCourse helper_ob;
SQLiteDatabase db_ob;
ListView nameList;
Button registerBtn;
Cursor cursor;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.subject);
nameList = (ListView) findViewById(R.id.list);
registerBtn = (Button) findViewById(R.id.addsubject);
adapter_ob = new DBHandlerCourse(this);

String[] from = { DBHelperCourse.KEY_COURSE_NAME, DBHelperCourse.KEY_COURSE_CODE, DBHelperCourse.KEY_START_TIME};
int[] to = { R.id.coursename, R.id.coursecode, R.id.starttime };
cursor = adapter_ob.queryName();
@SuppressWarnings("deprecation")
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this,
R.layout.row, cursor, from, to);
nameList.setAdapter(cursorAdapter);
nameList.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Bundle passdata = new Bundle();
Cursor listCursor = (Cursor) arg0.getItemAtPosition(arg2);
int nameId = listCursor.getInt(listCursor
.getColumnIndex(DBHelperCourse.KEY_ID));
Toast.makeText(getApplicationContext(),Integer.toString(nameId), 500).show();
passdata.putInt("keyid", nameId);
Intent passIntent = new Intent(Subject.this,
EditCourse.class);
passIntent.putExtras(passdata);
startActivity(passIntent);
}
});
registerBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent registerIntent = new Intent(Subject.this,
AddCourse.class);
startActivity(registerIntent);
}
});

}

@SuppressWarnings("deprecation")
@Override
public void onResume() {
super.onResume();
cursor.requery();

}

DBHandlerCourse.java

 public class DBHandlerCourse {

SQLiteDatabase database_ob;
DBHelperCourse openHelper_ob;
Context context;

public DBHandlerCourse(Context c) {
context = c;
}

public DBHandlerCourse opnToRead() {
openHelper_ob = new DBHelperCourse(context,
DBHelperCourse.DATABASE_NAME, null, DBHelperCourse.VERSION);
database_ob = openHelper_ob.getReadableDatabase();
return this;

}

public DBHandlerCourse opnToWrite() {
openHelper_ob = new DBHelperCourse(context,
DBHelperCourse.DATABASE_NAME, null, DBHelperCourse.VERSION);
database_ob = openHelper_ob.getWritableDatabase();
return this;
}

public void Close() {
database_ob.close();
}

public long insertDetails(String courseName, String courseCode, String lecturer, String creditHour, String startTime) {
ContentValues contentValues = new ContentValues();
contentValues.put(DBHelperCourse.KEY_COURSE_NAME, courseName);
contentValues.put(DBHelperCourse.KEY_COURSE_CODE, courseCode);
contentValues.put(DBHelperCourse.KEY_LECTURER, lecturer);
contentValues.put(DBHelperCourse.KEY_CREDIT_HOUR, creditHour);
contentValues.put(DBHelperCourse.KEY_START_TIME, startTime);
opnToWrite();
long val = database_ob.insert(DBHelperCourse.TABLE_NAME, null,
contentValues);
Close();
return val;

}

public Cursor queryName() {
String[] cols = { DBHelperCourse.KEY_COURSE_NAME, DBHelperCourse.KEY_COURSE_CODE, DBHelperCourse.KEY_START_TIME};
opnToWrite();
Cursor c = database_ob.query(DBHelperCourse.TABLE_NAME, cols, null,
null, null, null, null);

return c;

}

public Cursor queryAll(int nameId) {
String[] cols = { DBHelperCourse.KEY_COURSE_NAME, DBHelperCourse.KEY_COURSE_CODE, DBHelperCourse.KEY_START_TIME };
opnToWrite();
Cursor c = database_ob.query(DBHelperCourse.TABLE_NAME, cols,
DBHelperCourse.KEY_ID + "=" + nameId, null, null, null, null);

return c;

}

public long updateldetail(int rowId, String courseName, String courseCode, String lecturer, String creditHour, String startTime) {
ContentValues contentValues = new ContentValues();
contentValues.put(DBHelperCourse.KEY_COURSE_NAME, courseName);
contentValues.put(DBHelperCourse.KEY_COURSE_CODE, courseCode);
contentValues.put(DBHelperCourse.KEY_LECTURER, lecturer);
contentValues.put(DBHelperCourse.KEY_CREDIT_HOUR, creditHour);
contentValues.put(DBHelperCourse.KEY_START_TIME, startTime);
opnToWrite();
long val = database_ob.update(DBHelperCourse.TABLE_NAME, contentValues,
DBHelperCourse.KEY_ID + "=" + rowId, null);
Close();
return val;
}

public int deletOneRecord(int rowId) {
// TODO Auto-generated method stub
opnToWrite();
int val = database_ob.delete(DBHelperCourse.TABLE_NAME,
DBHelperCourse.KEY_ID + "=" + rowId, null);
Close();
return val;
}

DBHelperCourse.java

public static final String DATABASE_NAME = "CourseDB";
public static final String TABLE_NAME = "Course";
public static final int VERSION = 5;

public static final String KEY_ID = "_id";
public static final String KEY_COURSE_NAME = "coursename";
public static final String KEY_COURSE_CODE = "coursecode";
public static final String KEY_LECTURER = "lecture";
public static final String KEY_CREDIT_HOUR = "credithour";
public static final String KEY_START_TIME = "starttime";

public static final String SCRIPT = "create table " + TABLE_NAME + " ("
+ KEY_ID + " integer primary key autoincrement, " + KEY_COURSE_NAME
+ " text not null, " + KEY_COURSE_CODE + " text not null," + KEY_LECTURER
+ " text not null, " + KEY_CREDIT_HOUR + " text not null," + KEY_START_TIME
+ " text not null );";

public DBHelperCourse(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SCRIPT);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table " + TABLE_NAME);
onCreate(db);
}

最佳答案

将 _id 列添加到游标查询中,因为您必须为查询提供 _id 列,该列为 SimpleCursorAdapter 提供数据

String[] cols = { DBHelperCourse.KEY_ID,DBHelperCourse.KEY_COURSE_NAME, DBHelperCourse.KEY_COURSE_CODE,   DBHelperCourse.KEY_START_TIME};

关于java - android 数据库中我缺少的列在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com