【问题标题】:Android SQLite select IS NOT NULLAndroid SQLite 选择不为空
【发布时间】:2014-10-15 14:14:53
【问题描述】:

我正在尝试仅检索数据库表中 not NULL 的数据,但 IS NOT NULL 子句似乎不起作用。还会显示空字段。

String sql = "SELECT _id, nome_sotto FROM Categorie
 WHERE nome_categoria = '"+i.getStringExtra("categoria")+"' 
AND nome_sotto IS NOT NULL ORDER BY nome_sotto  ASC";

private void list() {
SQLiteDatabase db = mHelper.getReadableDatabase();
final List<Dettaglio> dettagli = new ArrayList<Dettaglio>();

String sql = "SELECT _id, nome_sotto FROM Categorie
 WHERE nome_categoria = '"+i.getStringExtra("categoria")+"' 
AND nome_sotto IS NOT NULL ORDER BY nome_sotto  ASC";

Cursor c = db.rawQuery(sql, null);

    while (c.moveToNext()){
        Dettaglio d = new Dettaglio();

        d.id = c.getString(0);
        d.sottocat = c.getString(1);                                

        dettagli.add(d);
    }
    c.close();


db.close();

ListAdapter adapter....
}

【问题讨论】:

  • 请分享输出,你得到的回应
  • 作为一个空字段,输出是 ListView 的空行。
  • 添加一些日志记录以捕获查询结果,然后将其添加到您的问题中。还向我们展示您发出查询和处理结果的代码。
  • 可能该值是一个包含null的字符串。
  • 您确定_id 字段是字符串吗?对于数据库查询,它通常是 long,CursorAdapter 期望它是 long。

标签: android sqlite null


【解决方案1】:

空不等于空。如果要过滤掉空值和空值,则需要添加:AND nome_sotto != ''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多