Я новичок в SQLITE
DB
Я использую эти строки кода для создания БД, таблицы и вставки, извлечения данныхОшибка чтения данных из `Sqlite` DB
try {
SQLiteDatabase db = openOrCreateDatabase("Custom_Database", MODE_PRIVATE, null);
db.execSQL("Create Table If Not Exists Age (FirstName Varchar, LastName Varchar, age int(3));");
db.execSQL("Insert into Age Values ('Inzimam', 'Tariq', 22);");
Cursor c = db.rawQuery("Select * From Age", null);
c.moveToFirst();
Toast.makeText(getApplicationContext(), c.getString(c.getColumnIndex("pName")) + " " + c.getString(c.getColumnIndex("fName")), Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "Database Created Your code is working ! ", Toast.LENGTH_SHORT).show();
c.moveToNext();
db.close();
}catch (Exception e){
Toast.makeText(getApplicationContext(), "Error : " +e.getMessage(), Toast.LENGTH_LONG).show();
}
Но он бросает exception Не удалось выполнить строку 0, столбец -1 с
CursorWinsow
. Убедитесь, что курсор инициализирован правильно, прежде чем получать доступ к данным .
Я думаю, что c.moveToFirst();
должен делать эту работу для этого Но его не делать, почему?
Как работает тот же код в другом проекте. В чем причина его ошибки в этом приложении?
Edit: После сохранения FisrtName и LastName в строки и использования строк в тосте работает отлично, как
String name = c.getString(0);
String father = c.getString(1);
Toast.makeText(getApplicationContext(), "Name = " + name + " " + father, Toast.LENGTH_SHORT).show();
Но я интересно, в чем разница, получая данные в Toast
или Strings
Спасибо
Добавляя 'дб = this.getWritableDatabase();' ее дает синтаксическую ошибку «Не удалось разрешить' getWritableDatabase(); 'метод –
попробуйте без этой строки и скажите мне, где вы используете это в фрагменте или действии –
Я попробовал его в' onCreate() 'method –