Java 传递订单

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

我有一个包含多个列的列表视图;例如姓名、日期等。我希望能够单击标题文本视图并按该字段对列表进行排序。当列表加载变量时有效,并且列表按字段_id进行查询和排序(除了它有效外,这并不奇怪),但是当我单击标题TextView时,我得到一个强制关闭:

线程[main](挂起(异常SQLiteException))
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); }