Java 传递订单
我有一个包含多个列的列表视图;例如姓名、日期等。我希望能够单击标题文本视图并按该字段对列表进行排序。当列表加载变量时有效,并且列表按字段_id进行查询和排序(除了它有效外,这并不奇怪),但是当我单击标题TextView时,我得到一个强制关闭: 线程[main](挂起(异常SQLiteException))Java 传递订单,java,android,sqlite,sql-order-by,Java,Android,Sqlite,Sql Order By,我有一个包含多个列的列表视图;例如姓名、日期等。我希望能够单击标题文本视图并按该字段对列表进行排序。当列表加载变量时有效,并且列表按字段_id进行查询和排序(除了它有效外,这并不奇怪),但是当我单击标题TextView时,我得到一个强制关闭: 线程[main](挂起(异常SQLiteException)) ViewRoot.handleMessage(消息)行:1757 ViewRoot(处理程序)。dispatchMessage(消息)行:99 Looper.loop()行:123 Activ
ViewRoot.handleMessage(消息)行:1757
ViewRoot(处理程序)。dispatchMessage(消息)行:99 Looper.loop()行:123 ActivityThread.main(字符串[])行:4595
调用(对象,对象[],类,类[],类,整数,布尔值)行:不可用[本机方法]
调用(对象,对象…)行:521
ZygoteInit$MethodAndArgsCaller.run()行:860
颧骨单位。主(字符串[])行:618 NativeStart.main(字符串[])行:不可用[本机方法] 在不更改我的orderby变量时,TextView不会出现错误 设置变量:
private View.OnClickListener NameSortbtnListener=new View.OnClickListener(){
填充列表:
私有void fillData(){
游标notescrsor=mDbHelper.fetchAllJournals(排序);
开始标记光标(notescrsor);
from,to);
setListAdapter(注释);
}
查询(在数据库适配器中):
公共游标获取所有日记账(字符串排序){
我不知道你的问题是什么。但是,当你发现异常时,你应该能够在SQLiteException对象中打印出消息,这应该有助于跟踪问题 除此之外,我假设您已经定义了一些常量,例如: 字符串KEY\u JROWID=“KEY\u JROWID”; 字符串KEY\u JOURNAL\u TITLE=“KEY\u JOURNAL\u TITLE” 在onClick事件中,您将排序设置为“KEY\u JOURNAL\u TITLE”,而不是KEY\u JOURNAL\u TITLE。如果列名与变量名不直接匹配,SQLite可能会引发列未找到异常
我看到的另一个可能的问题是排序列中前后的随机空格。不知道,为什么会有它…所以它们可能是一个原因。我真的怀疑这会导致问题,但是,这只是一个偶然的结果。我添加了一个顺序字符串,并将它们组合在语句中。。。 sort的值是“name”,order的值是“ASC”。两者都在字符串中存储了out引号 public Cursor fetchAllJournals(String sort, String order) { return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE, KEY_LOCATION, KEY_STEPS},null , null, null, null, " " + sort + " " + order + " " ,null); } 公共游标获取所有日记账(字符串排序、字符串顺序){ 返回mDb.query(DATABASE_JOURNAL_表,新字符串[]{KEY_JROWID, 关键字日志标题、关键字日志注释、关键字日期、关键字位置、, 键_STEPS},null,null,null,null,“+sort+”“+order+”,null); }
在数据库适配器中,是的,每个字段都有常量。我使用了空格,但仍然出现了相同的错误。另外:我可能没有指出我在调用查询之前声明了sort,并且没有错误。private String sort=“null”;SQLiteException上的消息如何?如果替换sort=“KEY\u JOURNAL\u TITLE”怎么办使用sort=KEY\u JOURNAL\u TITLE?我现在无法测试它,但我不相信您可以在没有quotessort的情况下设置字符串=“'KEY\u JOURNAL\u TITLE'”;消除了错误,但仍然没有排序..添加了一个引号,没有可视操作
String[] from = new String[]{journalDbAdapter.KEY_JOURNAL_TITLE,
journalDbAdapter.KEY_LOCATION, journalDbAdapter.KEY_JDATE,
journalDbAdapter.KEY_STEPS};
int[] to = new int[]{R.id.text1, R.id.text2, R.id.text3, R.id.text4};
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, notesCursor,
return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID,
KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE, KEY_LOCATION,
KEY_STEPS},null , null, null, null, sort ,null);
}
public Cursor fetchAllJournals(String sort, String order) {
return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID,
KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE, KEY_LOCATION,
KEY_STEPS},null , null, null, null, " " + sort + " " + order + " " ,null);
}