Java 无法从Android上的sqlite db获取任何数据
我有一个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
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'不存在