Android SQLite检查表是否包含行

Android SQLite检查表是否包含行,第1张

概述所以我正在开发一款针对 Android的游戏,而且我目前仍然停留在主菜单中的“加载存档游戏”按钮. 此按钮调用从数据库读取数据的方法,并将其写入资源类,从该资源类中将访问此数据. 问题是:如果表中没有行,我想禁用加载按钮,这意味着不存在savegame. 为此,我使用以下方法: public boolean checkForTables(){ boolean hasTables; 所以我正在开发一款针对 Android的游戏,而且我目前仍然停留在主菜单中的“加载存档游戏”按钮.
此按钮调用从数据库读取数据的方法,并将其写入资源类,从该资源类中将访问此数据.

问题是:如果表中没有行,我想禁用加载按钮,这意味着不存在savegame.

为此,我使用以下方法:

public boolean checkFortables(){    boolean hastables;    String[] column = new String[1];    column[0] = "position";    Cursor cursor;    cursor = db.query("itemtable",column,null,null);    if(cursor.isNull(0) == true){        hastables=false;    }else{        hastables=true;    }    return hastables;

正如您所看到的,它会在其中一个数据库表上启动查询,并检查0列(该列中唯一应该位于此列中的列)是否为空. ATM我无法检查此调用的logcat结果,因为我似乎遇到了一些问题,但似乎查询抛出异常,因为该表为空.

有没有想过检查表的行?

____________________编辑______________

注意:我检查了数据库,确实是空的

好吧我在表上使用了rawquery但是使用count-statement的方法产生了一个错误,所以我正在使用

public boolean checkFortables(){        boolean hastables;        Cursor cursor = db.rawquery("SELECT * FROM playertable",null);        if(cursor.getCount() == 0){            hastables=false;        if(cursor.getCount() > 0){            hastables=true;        }        cursor.close();        return hastables;    }

我正在使用此方法来决定是否禁用loadGame按钮,如下所示:

loadGame = (Imagebutton) findVIEwByID(R.ID.loadbutton);    loadGame.setEnabled(databaseAccess.checkFortables());    loadGame.setonClickListener(new OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            databaseAccess.loadplayer();            databaseAccess.loadItems();            databaseAccess.droptables();        }    });

因此,如果checkFortables得到一个!= 0的行数,它将返回true,因此启用button,或者如果rowcount = 0则禁用它

有趣的是,尽管表是空的,但checkFortables()返回true,因为getCount()似乎返回了一个!= 0的值 – 我只是没有得到它.

解决方法 执行查询,例如从itemtable中选择count(*).此查询将生成一个整数结果,其中包含该表中的行数.

例如:

Cursor cursor = db.rawquery("SELECT count(*) FROM itemtable");if (cursor.getInt(0) > 0) ... // there are rows in the table

————————————————– ———————————–

请注意,@ PareshDudhat尝试了以下编辑,但被评论者拒绝了.自从这个答案发布以来,我没有跟上AndroID的步伐,但是一个非常简短的研究表明编辑(至少改变了如何调用rawquery(),我没有检查movetoFirst()但@ k2col的评论建议它现在也是必需的)具有优点.

Cursor cursor = db.rawquery("SELECT count(*) FROM itemtable",null);cursor.movetoFirst();if (cursor.getInt(0) > 0) ... // there are rows in the table
总结

以上是内存溢出为你收集整理的Android SQLite检查表是否包含行全部内容,希望文章能够帮你解决Android SQLite检查表是否包含行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1123440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存