Android SQLite中的预期错误

时间:2013-07-09 03:13:06

标签: android sqlite android-sqlite

在我的App中,我试图在SQLite Table中保存学生的分数,并在ListView中显示这些分数,我的App也具有SORT的功能}命令,当我分别输入学生89,78,90,100的分数时,我想要按照升序排序List,有100分的学生姓名位于列表的顶部,然后学生们有78,89,90分的标记,一个接一个地列出,为什么会出现这个错误? 我的数据库架构是:

public static final String COL_ID = "_id";
public static final String COL_NAME = "name";
public static final String COL_ADDRESS = "address";
public static final String COL_MARKS = "marks";


protected static final String CREATE_QUERY = "CREATE TABLE " + FRIEND_TABLE +
        " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "   +
        COL_NAME + " TEXT, " + COL_ADDRESS + " TEXT," +
        COL_MARKS + " TEXT)";

排序逻辑位于PrefrenceActivity中,如下所示:

<?xml version="1.0" encoding="utf-8"?>


<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
        android:dialogTitle="Choose a sort order"
        android:key="sort_order"
        android:summary="Choose your preferred sort order"
        android:title="Sort Order" 
        android:entries="@array/sort_names"
        android:entryValues="@array/sort_clauses"/>

</PreferenceScreen>

数组是:

<string-array name="sort_names">
    <item>By Name, Ascending</item>
    <item>By Name, Descending</item>
    <item>By Roll</item>
    <item>By Address, Ascending</item>
    <item>By Address, Descending</item>
</string-array>
<string-array name="sort_clauses">
    <item>name ASC</item>
    <item>name DESC</item>
    <item>marks ASC</item>
    <item>address ASC</item>
    <item>address DESC</item>
</string-array>

任何人都可以找到这个提到的bug的解决方案!

1 个答案:

答案 0 :(得分:4)

这不是SQLite或Android中的错误,这是数据库架构中的错误。您已将marks列定义为TEXT,字符串"100"在字符串"89"之前排序(按升序排序),即使数字100排序后号码89;由于同样的原因,排序按降序向后看。您的marks列可能应该是integer,然后您的排序将按预期方式运行。