Итак, я работаю над игрой для Android, и в настоящее время я застрял на кнопке «Загрузить игру» в главном меню.Эта кнопка вызывает методы, которые читают данные из базы данных и записывают их в класс ресурсов, из которого будут доступны эти данные.
Проблема: Я хочу отключить кнопку загрузки, еслив таблицах нет строк, что означает, что сохранение не существует.
Для этого я использовал следующий метод:
public boolean checkForTables(){
boolean hasTables;
String[] column = new String[1];
column[0] = "Position";
Cursor cursor;
cursor = db.query("itemtable", column, null, null, null, null, null);
if(cursor.isNull(0) == true){
hasTables=false;
}else{
hasTables=true;
}
return hasTables;
Как вы можете видеть, он запускает запрос на одном изтаблицы базы данных и проверяет, является ли нулевой столбец, который является единственным в этом курсоре, нулевым.ATM Я не могу проверить результаты logcat по этому вызову, потому что у меня, кажется, есть некоторые проблемы с ним, но кажется, что запрос выдает исключение, потому что таблица пуста.
Любая идея проверить таблицы на наличие строк?
_ __ _ __ _ __ _ __ _ __ _ __ _ _EDIT_ _ __ _ __ _ __ _ __ _
ПРИМЕЧАНИЕ. Я проверил базу данных, и она точно пуста
Хорошо, я использовал rawQuery для таблицы, но подход с подсчетом-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 и, следовательно, включит кнопку или отключит ее, если rowcount = 0
Забавно, хотя таблицы пустые, checkForTables () возвращает true, потому что getCount () кажетсяустановите значение! = 0 - я просто не понимаю.