大佬教程收集整理的这篇文章主要介绍了Android SQLite检查表是否包含行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题是:如果表中没有行,我想禁用加载按钮,这意味着不存在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的值 – 我只是没有得到它.
@H_404_4@
例如:
cursor cursor = db.rawQuery("SELECT count(*) FROM itemtable"); if (cursor.geTint(0) > 0) ... // there are rows in the table
————————————————– ———————————–
请注意,@ PareshDudhat尝试了以下编辑,但被评论者拒绝了.自从这个答案发布以来,我没有跟上Android的步伐,但是一个@R_164_10584@的研究表明编辑(至少改变了如何调用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@H_404_4@ @H_404_4@
以上是大佬教程为你收集整理的Android SQLite检查表是否包含行全部内容,希望文章能够帮你解决Android SQLite检查表是否包含行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。