此按钮调用从数据库读取数据的方法,并将其写入资源类,从该资源类中将访问此数据.
问题是:如果表中没有行,我想禁用加载按钮,这意味着不存在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检查表是否包含行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)