当前位置: 首页 > 面试题库 >

如何检查我的sqlite表中是否包含数据?

郗丰
2023-03-14
问题内容

编辑,根据以下答案略微更改了代码,但仍无法正常工作。 我还添加了一条日志消息,告诉我getCount是否返回>
0,并且确实如此,所以我认为查询可能有问题吗?或我对光标的使用。

我已经创建了一个表,我想检查它是否为空,如果它为空,我想运行一些插入语句(存储在数组中)。

下面是我的代码,虽然我没有错误,但是当我拉出.db文件时,我可以看到它不起作用。您将如何解决这个问题?

public void onCreate(SQLiteDatabase db) {
        Log.i("DB onCreate", "Creating the database...");//log message
        db.execSQL(createCATBUDTAB);
        db.execSQL(createTWOWEETAB);
        try{
            Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);
        if (cur.getCount() > 0){
            Log.i("DB getCount", " getcount greater than 0");//log message
            //do nothing everything's as it should be
        }
        else{//put in these insert statements contained in the array
            Log.i("DB getCount", " getcount less than 0, should read array");//log message
            for(int i=0; i<13; i++){
                db.execSQL(catInsertArray[i]);
            }
        }
        }catch(SQLiteException e){System.err.println("Exception @ rawQuery: " + e.getMessage());}
    }

抱歉,如果这是一个非常愚蠢的问题或方法,那么我是新手。任何答案非常感谢!


问题答案:

查询SELECT COUNT(*)现有表应该 永远不会 返回null。如果表中没有行,它将返回包含零值的一行。

相反,具有非零值的行表示它 不为 空。

在这两种情况下,都应返回一行,这意味着它将始终通过

//do nothing everything's as it should be

部分。

要解决此问题,请将查询保持原样(您不希望这样做,select column_name因为那是不必要的,可能会导致效率低下)。将其保留为select count(*),它将始终返回一行,并使用以下代码(仅在我的脑中测试过,因此请小心):

Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);
if (cur != null) {
    cur.moveToFirst();                       // Always one row returned.
    if (cur.getInt (0) == 0) {               // Zero count means empty table.
        for (int i = 0; i < 13; i++) {
            db.execSQL (catInsertArray[i]);
        }
    }
}


 类似资料:
  • 有一个任务从控制台得到N个数字,找到最长和最短的一个和他们的长度。任务并不难,工作正常,但我决定做一个检查,如果控制台输入与任务的条件相对应: 只有整数。 是精确的N个数字,而不是更多/更少。 我决定编写一个布尔方法isinputCorret(),它将使用扫描器并检查输入是否正确,但它不能正常工作。

  • 问题内容: 在Python中,如何检查是否有数据? 我发现不仅可以检查stdin是否已连接到TTY设备,还可以检查是否有可用数据。 但是如果有人使用诸如 然后使用,它仍然返回True。我需要做什么检查stdin是否有数据? 问题答案: 在Unix系统上,您可以执行以下操作: 在Windows上,虽然select模块只能与套接字一起使用,所以您需要使用其他机制。

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器

  • 问题内容: 找出JavaScript数组是否包含值的最简洁,最有效的方法是什么? 这是我知道的唯一方法: 有没有更好,更简洁的方法来实现这一目标? 这与Stack Overflow问题密切相关。 在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题。 问题答案: 现代的浏览器,这不正是这一点,得到广泛支持的人,除IE: 你也可以使用,它不太直接,但对于过时的浏览器不需要使用。

  • 问题内容: 我需要检查字符串是否包含数字。任何数字。字符串是否为数字,而不是数字,但包含一个数字。 例子: ‘test’=没有数字。 ‘test2’=包含数字。 问题答案: 使用正则表达式: 不使用正则表达式:

  • 问题内容: 我正在实现是否有位图,那么它应该将图像从imageview保存到内部存储器,否则在应用程序的内部存储器中设置另一个位图。这是代码:_ 问题答案: 您可以按以下方式检查它: 只需检查Bitmap值,如下所示: