android - Android SQLite 中的意外错误

标签 android sqlite android-sqlite

在我的 App 中,我试图在 SQLite Table 中保存学生的分数,并在 ListView 中显示这些分数,我的 App 也有SORT 顺序的功能,当我分别输入学生 89, 78, 90, 100 的分数后,我想对 List 进行排序按分数升序排列,100分的学生名字排在最前面,然后78、89、90分的学生依次出现在列表中,为什么会出现这个bug? 我的数据库架构是:

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>

谁能找到这个提到的错误的解决方案!

最佳答案

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

关于android - Android SQLite 中的意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539276/

相关文章:

sql - 使用 SQL 查询对计数进行排名

MySQL 查询到 SQLite 查询过去 24 小时的事件

android - 飞溅 Activity 期间数据库加载缓慢

sql - 加入相同的表列

android - 您可以从 ActionBar 的下拉导航中启动 Activity Intent 吗

java - 如何使用匹配器替换一个网址中的2个不同的字符串?

android - 从 Android 中的不同 SQLite 表中检索数据?

java - Android中SQLite的可变错误

android - 自定义适配器 : get item number of clicked item in inflated listview

android - 无法将 SHA1 添加到 Firebase 证书指纹中