我为获取数据制作了以下功能。
public List<Presentation> getSlideMaster() {
List<Presentation> pptList = new ArrayList<Presentation>();
String selectQuery = "SELECT * FROM "
+ Constants.SLIDE_MASTER.slideMaster_Table + " WHERE dm_Id=" + lastDeckID;
SQLiteDatabase db = dbhelper.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Presentation presentation = new Presentation();
presentation.setSlideId(cursor.getString(0));
getSlideID = presentation.getSlideId();
Log.i("string slide id in database helper", "" + presentation.getSlideId());
pptList.add(presentation);
} while (cursor.moveToNext());
}
String selectQuery2 = "SELECT sl_Id FROM "
+ Constants.SLIDE_LAYOUT.slideLayout_Table + " WHERE sm_Id = "
+ getSlideID;
Cursor cursorSL = db.rawQuery(selectQuery2, null);
Log.i("query", ""+selectQuery2);
if(cursorSL.moveToFirst()){
Log.i("getslideLayout function", "");
do{
Log.i("query string 0 ", ""+cursorSL.getString(0));
Presentation presentation = new Presentation();
presentation.setSlideLayoutId(cursorSL.getString(0));
getSlideLayoutId = presentation.getSlideLayoutId();
Log.i("string slide layout id in slideMaster", "" + getSlideLayoutId);
}while(cursorSL.moveToNext());
}
else{
Log.i("No Data Found!!!!!", "");
}
cursor.close();
cursorSL.close();
db.close();
return pptList;
}
我从slideMaster_Table获取数据非常简单,但是我无法从另一个查询中获取数据,这在if(cursorSL.moveToFirst())条件中的Logcat中没有打印任何值
当我在其他活动中使用代码时,我可以非常轻松地获得sl_Id。
答案 0 :(得分:0)
可能会在解决方案之下解决您的问题
使用Cursor cursorSL = db.rawQuery(selectQuery2, new String[]{getSlideID});
代表
selectQuery2="SELECT sl_Id FROM "+Constants.SLIDE_LAYOUT.slideLayout_Table + " WHERE sm_Id = ?";
答案 1 :(得分:0)
我的猜测是你在构建第二个查询时遇到了麻烦。基本上,像你一样构建数据库查询绝不是一个好主意。 android数据库API为此提供了更准确的界面。将您的第二部分程序重写为:
String [] selectArgs = {getSlideID};
String selectQuery2 = "sm_Id = ?";
Cursor cursorSL = db.query(Constants.SLIDE_LAYOUT.slideLayout_Table, null,
selectQuery2, selectArgs, null, null, null, null);
请注意,query
的第四个参数用于替换where参数,它是String[]
并且所有数组成员在?的位置按顺序替换?在查询字符串中。
我认为您可能在构建查询时遇到问题。
PS:您也在滥用日志标记:
Log.i("No Data Found!!!!!", "");
实际应该是Log.i("TAG", "No Data Found!!!!!");
第一个参数是日志标记,应该用于对相关日志消息进行分组,在这种情况下,您可以在自己的组中打印每条消息,这没有多大意义。
我知道这个说明并不会解决你当前的问题,但是我指出了这一点,所以你将来会知道它(我也会看到我的同事从这样的错误做法中学习)。< / p>