Я пытаюсь сделать свое приложение, это своего рода словарь с обучающим персоналом. Но я застрял в этот момент:
Мне нужно вставить статистику слова (правильный и неправильный ответ), но все запросы заканчиваются ошибками:
<code>E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.maxvek.myapplication, PID: 9088
android.database.CursorIndexOutOfBoundsException:Index -1 requested,with a size of 1</code>
или как-то так:
no response from DB
Я попытался сделать такой же запрос на sqliteonline и эта работа.
Я просто не знаю, что делать. Я читаю кое-что и думаю, что мне нужен обратный звонок. Но я новичок в Java и даже не могу понять, как это сделать.
Мой класс:
DatabaseHelper
public class DatabaseHelper extends SQLiteOpenHelper {
sqLiteDatabase.execSQL("create table " + TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT,uk TEXT, en TEXT, ru TEXT, de TEXT, fr TEXT)");
sqLiteDatabase.execSQL("create table " + TABLE_STAT_WORD + " (id INTEGER PRIMARY KEY AUTOINCREMENT,uk TEXT, en TEXT, ru TEXT, de TEXT, fr TEXT, cor INTEGER, incor INTEGER)");
...
public void insertStatWord(String word, String lang, Boolean answer) {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select id from " + TABLE_NAME + " where " + lang + " = '" + word + "' limit(1)", null);
String id = res.getString(0);
if (answer) {
Cursor update = db.rawQuery("update " + TABLE_STAT_WORD + " set cor = cor+1 WHERE " + lang + " = " + id, null);
if (update == null) {
ContentValues contentValues = new ContentValues();
contentValues.put(lang, id);
contentValues.put("cor", 1);
db.insert(TABLE_STAT_WORD, null, contentValues);
}
} else {
Cursor update = db.rawQuery("update " + TABLE_STAT_WORD + " set incor = incor+1 WHERE " + lang + " = " + id, null);
if (update == null) {
ContentValues contentValues = new ContentValues();
contentValues.put(lang, id);
contentValues.put("incor", 1);
db.insert(TABLE_STAT_WORD, null, contentValues);
}
}
...
}
DatabaseInstance
public class DatabaseInstance {
private static DatabaseInstance ourInstance = new DatabaseInstance();
private DatabaseHelper myDB;
private DatabaseInstance() {
}
public static DatabaseInstance getInstance() {
return ourInstance;
}
public synchronized void init(Context context) {
if (myDB == null) {
myDB = new DatabaseHelper(context);
}
}
public DatabaseHelper getMyDB() {
return myDB;
}
}
Из этого фрагмента я пытаюсь вызвать этот метод:
TrainingFragment
private void statOfWord(String word, String lang, boolean answer) {
DatabaseInstance.getInstance().getMyDB().insertStatWord(word, lang, answer);
}