我有一个执行此功能的数据库助手:
public Cursor getCourseNames() throws SQLException { mDb = mDbHelper.getReadableDatabase(); return mDb.query("Course",null, COURSE_ROWID, null, null, null, null, null); }
它从中提取的表如下所示:
private static final String COURSE_ID = "CourseID"; private static final String COURSE_NAME = "Name"; private static final String COURSE_CODE = "CourseCode"; private static final String COURSE_ROWID = "_id"; private static final String COURSE_CREATE = "create table " + "Course" + " ( " + COURSE_ROWID + " integer primary key autoincrement, " + COURSE_ID + "integer not null," + COURSE_NAME + "text not null, " + COURSE_CODE + "text not null" + ");";
在我的主要活动中,我尝试这样做并得到一个空指针…
public void buildCoursetoChapterList(){ Cursor cursor = dbHelper.getCourseNames(); SimpleCursorAdapter adapter = new SimpleCursorAdapter(MainActivity.this, android.R.layout.simple_list_item_1, cursor, null, null); ListView listView = (ListView) findViewById(R.id.list); listView.setAdapter(adapter); }
有人知道我的问题是什么吗?我在较早的时候将数据放入数据库:
if(dbHelper.checkCourseForData() !=null) { setContentView(R.layout.classlist); } else { dbHelper.addFirstClassToDb(course_code, name, course_id); Log.d+i("Course added to DB", course_code + " " + name + " " + course_id); }
尝试了一下,仍然没有,我想选择“课程”中的所有“名称”值。没头绪…失去希望。
public Cursor checkCourseForData() throws SQLException { String[] values = {COURSE_NAME}; Cursor mCursor = mDb.query("Course",values,COURSE_ROWID + "=" + "Name", null, null, null, null, null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; }
应该是这个
public Cursor getCourseNames() throws SQLException { String[] values = {COURSE_NAME}; mDb = mDbHelper.getReadableDatabase(); return mDb.query("Course",values,COURSE_ROWID, null, null, null, null, null); }
说明:
api中的方法已定义为
公共游标查询(字符串表,字符串[]列,字符串选择,字符串[] selectionArgs,字符串groupBy,具有字符串,字符串orderBy)
因此,您需要相应地传递字符串。
用户以我的示例为参考,它对我有用
private String name; private String Events_Table = "events"; private String[] Columns = {"_id", "Name", "Date", "Time_Slot", "Venue", "Details", "EHName", "EHNumber"} ; private String WhereClause = Columns[1]+"=?" ; Cursor cursor = db.query(Events_Table, Columns, WhereClause, new String[] {name}, null, null, null);
考虑阅读此
参量
table 用于编译查询的表名。
列 返回哪些 列 的列表。传递null将返回所有列,不建议这样做,以防止从不会使用的存储中读取数据。
选择 声明返回哪些行的过滤器,格式为SQL WHERE子句(不包括WHERE本身)。传递null将返回给定表的所有行。
selectionArgs 您可以在选择中包括?s,这些值将被selectionArgs中的值替换,以便它们出现在选择中。这些值将绑定为字符串。
groupBy 声明如何对行进行分组的过滤器,格式为SQL GROUP BY子句(不包括GROUP BY本身)。传递null将导致行不被分组。具有过滤器,以声明要包含在游标中的行组(如果正在使用行分组),其格式设置为SQL HAVING子句(不包括HAVING本身)。传递null将导致包括所有行组,并且在不使用行分组时是必需的。
orderBy 如何对行进行排序,格式为SQL ORDER BY子句(不包括ORDER BY本身)。传递null将使用默认的排序顺序,该顺序可能是无序的。