SQLite データベースからデータをフェッチするアプリケーションを開発しています。テーブルにデータがあります。エミュレーターでアプリを実行すると、データが正しくフェッチされます。しかし、デバイスでデバッグしようとすると、データがフェッチされません。カーソルは 0 行を返しています。エミュレータで正常に動作します。
データベース呼び出しをトリガーし、配列リストを返すボタンクリックイベントがあります。コードスニペットは以下のとおりです。
f4.setOnClickListener(new OnClickListener()
{
@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
@Override
public void onClick(View v) {
if (Build.VERSION.SDK_INT >= 16) {
f4.setBackground(getResources().getDrawable(
R.drawable.standards_btn_pressed));
} else {
f4.setBackgroundDrawable(getResources()
.getDrawable(R.drawable.standards_btn_pressed));
}
List<ProductModel> pList = new ArrayList<ProductModel>();
db = new DataBaseHelper(getApplicationContext());
pList = db.getData("F4");
showTextFields(pList);
}
});
//getData function
public List<ProductModel> getData(String param) {
SQLiteDatabase db = this.getWritableDatabase();
String[] queryParam = new String[] { param.trim() };
Cursor cursor=null;
try
{
cursor = db.rawQuery(
"select * from FEPAFMACRO WHERE gritsize = ?", queryParam);
}
catch (Exception e) {
e.printStackTrace();
}
List<ProductModel> pList = new ArrayList<ProductModel>();
if (cursor.getCount() != 0) {
if (cursor.moveToFirst()) {
int i = 0;
do {
ProductModel pObj = new ProductModel();
pObj.gritSize = cursor.getString(cursor
.getColumnIndex("gritsize"));
.getColumnIndex("retention"));
pList.add(i, pObj);
i++;
} while (cursor.moveToNext());
}
}
return pList;
}
これをエミュレータで実行すると、データが表示されます。しかし、デバイスで実行すると、データは取得されません。エラーもありません。ログレポートにも何もありません