Есть таблица, в ней колонки:
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NUMBER = "Number";
public static final String COLUMN_NAME = "Name";
public static final String COLUMN_CHECKBOX = "Checkbox";
public static final String COLUMN_PROKRUTKA = "Prokrutka";
При попытке достать значение из последнего столбца пои имени первого вылетает указанная ошибка
Прочитал абсолютно все аналогичные темы на форуме, ничего не помогает. Сразу отпишусь, что все указанные столбцы в таблице есть, сама таблица есть, на приложении ее версия актуальная (приложение почистил, удалил и установил заново), кроме того, другая активность в приложении также использует значение "Prokrutka"
из таблицы и там все работает.
Вот код, из-за которого вылетает ошибка:
@Override
protected void onSizeChanged(int w, int h, int ow, int oh) {
Intent position = getIntent();
int positionValue = position.getIntExtra("head", 0);
sqlHelper = new DatabaseHelper(getApplicationContext());
db = sqlHelper.getReadableDatabase();
String[] columns=new String[]{"_id","Prokrutka"};
Cursor c = db.query("ppvs", columns, "_id =?",new String[]{String.valueOf(positionValue)},null,null,null);
if(c.moveToFirst()){
prokrutka = c.getInt(c.getColumnIndex("Prokrutka"));
}
super.onSizeChanged(w, h, ow, oh);
if (getContentHeight() > 0) scrollTo(0, Integer.parseInt(String.valueOf(prokrutka)));
}
Лог ошибки прилагаю Лог ошибки текстом Лог ошибки картинкой
class DatabaseHelper extends SQLiteOpenHelper {
private static String DB_PATH; // полный путь к базе данных
private static String DB_NAME = "ppvs.db";
private static final int SCHEMA = 6; // версия базы данных
static final String TABLE = "ppvs"; // название таблицы в бд
// названия столбцов
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NUMBER = "Number";
public static final String COLUMN_NAME = "Name";
public static final String COLUMN_CHECKBOX = "Checkbox";
public static final String COLUMN_PROKRUTKA = "Prokrutka";
private Context myContext;
DatabaseHelper(Context context) {
super(context, DB_NAME, null, SCHEMA);
this.myContext=context;
DB_PATH =context.getFilesDir().getPath() + DB_NAME;
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
void create_db(){
InputStream myInput = null;
OutputStream myOutput = null;
try {
File file = new File(DB_PATH);
if (!file.exists()) {
this.getReadableDatabase();
//получаем локальную бд как поток
myInput = myContext.getAssets().open(DB_NAME);
// Путь к новой бд
String outFileName = DB_PATH;
// Открываем пустую бд
myOutput = new FileOutputStream(outFileName);
// побайтово копируем данные
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
}
catch(IOException ex){
Log.d("DatabaseHelper", ex.getMessage());
}
}
public SQLiteDatabase open()throws SQLException {
return SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READWRITE);
}
}
Вот этот код гарантированно и как и задумано работает с этой же базой и этими же колонками в базе:
public void onResume() {
super.onResume();
try {
db = sqlHelper.open();
userCursor = db.rawQuery("select * from " + DatabaseHelper.TABLE, null);
String[] headers = new String[]{DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_PROKRUTKA};
userAdapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item,
userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0);
// если в текстовом поле есть текст, выполняем фильтрацию
// данная проверка нужна при переходе от одной ориентации экрана к другой
if(!userFilter.getText().toString().isEmpty())
userAdapter.getFilter().filter(userFilter.getText().toString());
// установка слушателя изменения текста
userFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
// при изменении текста выполняем фильтрацию
public void onTextChanged(CharSequence s, int start, int before, int count) {
userAdapter.getFilter().filter(s.toString());
}
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В цикле
Подскажите, какой, по вашему мнению, можно выбрать порт для планируемой системы автоматического православного IT-исповеданияСуть разработки...
Допустим в Классе есть указатель, тогда каким образом можно его проверить на nullptrПри попытке использовать простой if( a == nullptr) выдаёт ошибку...