Java 无法从Android上的sqlite db获取任何数据

Java 无法从Android上的sqlite db获取任何数据,java,android,database,sqlite,Java,Android,Database,Sqlite,我有一个DB助手,它可以执行以下功能: 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

我有一个DB助手,它可以执行以下功能:

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中的方法定义为

公共游标查询字符串表,字符串[]列,字符串选择, String[]SelectionAgs、String groupBy、String having、String 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);
考虑一下读这篇文章

参数

表编译查询所依据的表名

列要返回的列的列表。传递null将返回所有列,不鼓励使用null,以防止从不打算使用的存储中读取数据

选择一个声明返回哪些行的筛选器,格式为SQLWHERE子句,WHERE本身除外。传递null将返回给定表的所有行

SelectionAgs您可以在选择中包括?s,它将被SelectionAgs中的值替换,以便它们出现在选择中。这些值将被绑定为字符串

groupBy声明如何对行进行分组的筛选器,格式为SQL group BY子句,不包括group本身。传递null将导致不分组行。 如果正在使用行分组,则让筛选器声明要在游标中包括哪些行组,并将其格式化为SQL having子句,而不包括having本身。传递null将导致包括所有行组,并且在不使用行分组时需要传递null


orderBy如何对行进行排序,格式为SQL order BY子句,不包括order本身。传递null将使用默认的排序顺序,可能是无序的

如果有人想知道,因为给出了0个解释,而且很难注意到:他切换了参数的顺序,但是我的声明private static final String COURSE\u ROWID=\u id的问题是什么;参数正在查找字符串[]数组,而我声明为普通字符串?它仍然没有任何作用:/@Simon我添加了一些解释,请查看。Thanks@wilxjcherokee现在检查我的答案,你就会找到解决方案。谢谢大家,我现在仍然认为这是一个错误05-17 12:19:44.832:E/AndroidRuntime17465:java.lang.IllegalArgumentException:列'\u id'不存在