Ваш подход меня смущает. Я не знаю много о SQL, но похоже, что вы неоднократно запрашиваете у вашей базы данных одну строку наугад. Я читал, что это дорогостоящая операция. Я думаю, что вам лучше получить полный набор данных один раз, в начале и повторить это.
Как indexOfChromosomes и indexOfGens соотносятся с базой данных с колонками «foodstuff» и т. Д.? Я не вижу связи ...
Это модификация моего собственного метода, который хорошо работает в Android. Если работает rawQuery, то весь лот должен:
// The order of this array will affect final array
// I would also use this array in the query itself
String[] columnNames = {
"_id", "key_foodstuff", "key_calorie", "key_carbohydrate", "key_fat", "key_protein"
};
Cursor r = db.rawQuery("SELECT _id, key_foodstuff, key_calorie,
key_carbohydrate, key_fat, key_protein FROM (food INNER JOIN
categories ON food.key_nocategory = categories.nocategories)
WHERE key_type='primary' AND _id!=164", null);
int rowCount = r.getCount();
int columnCount = columnNames.length;
// create the required array with appropriate dimensions
String[][] array = new String[rowCount][columnCount];
// begin iterating over the cursor
if (r.moveToFirst()) {
int row = 0;
do {
// for each row of the cursor, get the values from all
// of the columns
for (int column = 0; column < columnCount; column++) {
array[row][column] = cursor.getString(cursor.
getColumnIndex(columnNames[column]));
}
row++;
} while (r.moveToNext());
}