使用从android SQLite3数据库读取的游标时出现问题
我一辈子都不明白为什么这个代码不起作用。它遵循的格式与我的应用程序的其他部分完全相同,只是我将两个属性传递给helper方法,这不应该是一个问题,我只返回一行,这可能是问题,但如果是,我不明白 在调用此命令之前,我有一个活动一直有效使用从android SQLite3数据库读取的游标时出现问题,android,database,sqlite,cursor,Android,Database,Sqlite,Cursor,我一辈子都不明白为什么这个代码不起作用。它遵循的格式与我的应用程序的其他部分完全相同,只是我将两个属性传递给helper方法,这不应该是一个问题,我只返回一行,这可能是问题,但如果是,我不明白 在调用此命令之前,我有一个活动一直有效 Log.d("Testing","Testing: " + cardID + " " + cardTypeID); //LogCat displays the right values 11 1 Cursor c = mDbHelper.fetchCard(car
Log.d("Testing","Testing: " + cardID + " " + cardTypeID);
//LogCat displays the right values 11 1
Cursor c = mDbHelper.fetchCard(cardID,cardTypeID); // <--COMMAND
我倾向于这样做,因为只有一行已经被读取,我需要做一个c.moveFirst()
之类的事情。我会帮你解决这个问题的。还有,我为什么不给LogCat写信呢。它似乎马上就失败了
我已经试过了
returnmDb.rawQuery(sql,null)代码>
我相信这和上面一样
非常感谢
标记您的mDbHelper为空。初始化它。学习使用LogCat,而不是用日志猜测导致应用程序崩溃的行,这真的很有帮助。你说得对,我愚蠢地错过了mdHelper初始化。之后出现了一个关闭光标错误,因此添加了c.close(),然后出现了一个索引越界错误,现在已经尝试了c.movefirst()将很有希望找到它的底部。所以我确实使用LogCat,但有时不明白它是关于什么的。我只有一排,用LogCat作为面包屑的一种,比如我走了多远。谢谢你的帮助。是的,终于成功了。我在这个小问题上只花了4小时。再次感谢您的帮助。如果应用程序崩溃时日志为空,请检查您的try/catch块是否存在,并确保在打印时不会吞下任何异常。调试器还可以帮助您显示导致异常的行和null变量。
public Cursor fetchCard(String cardID,String cardTypeID) {
String sql = "SELECT teamName FROM tbl_team JOIN tbl_card ON tbl_team.teamID = tbl_card.teamID WHERE cardID=" + cardID;
//This returns 1 row when run in a SQLite Database Browser
Log.d("Testing","Testing :" + cardID + " " + cardTypeID );
// Program has crashed before this Log
// Caused by: java.lang.NullPointerException
Cursor c;
c = mDb.rawQuery(sql, null);
return c;