Ошибка: (1) нет такой таблицы: человек в «SELECT * FROM person»JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Ошибка: (1) нет такой таблицы: человек в «SELECT * FROM person»

Сообщение Anonymous »

Я делаю мобильное приложение с базой данных sqlite, но при попытке прочитать таблицу «person» получаю ошибку, база данных подключена правильно, и в таблице есть данные.
Основное действие класса

Код: Выделить всё

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

btnShowBD = findViewById(R.id.btnShowBD);
listBD = findViewById(R.id.listBD);

bdHelper = new BDHelper(this);

try {
database = bdHelper.getWritableDatabase();
} catch (SQLException e) {
throw e;
}
}

public void onClickBtnShowBD(View view) {
ArrayList persons = new ArrayList();
HashMap person;

Cursor cursor = database.rawQuery("SELECT * FROM person", null);
if (cursor.moveToFirst()) {
do {
person = new HashMap();
person.put("name", cursor.getString(1));
person.put("achievement", cursor.getString(2));
persons.add(person);
} while (cursor.moveToNext());
}
cursor.close();

SimpleAdapter adapter = new SimpleAdapter(this, persons, R.layout.listview_item,
new String[]{"name", "achievement"},
new int[]{R.id.textPerson, R.id.textAchievement});
listBD.setAdapter(adapter);
}
класс BDHelper

Код: Выделить всё

public BDHelper(@Nullable Context context) {
super(context, BD_NAME, null, BD_VERSION);
this.myContext = context;
BD_LOCATION = context.getApplicationInfo().dataDir + "/databases/";

copyBD();
}

private boolean checkBD() {
File fileBD = new File(BD_LOCATION + BD_NAME);
return fileBD.exists();
}

private void copyBD() {
if (!checkBD()) {
this.getReadableDatabase();
try {
copyBDFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}

private void copyBDFile() throws IOException {
InputStream inputStream = myContext.getAssets().open(BD_NAME);
OutputStream outputStream = new FileOutputStream(BD_LOCATION + BD_NAME);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
outputStream.flush();
outputStream.close();
inputStream.close();
}

@Override
public void onCreate(SQLiteDatabase db) {
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
Ошибка

Код: Выделить всё

(1) no such table: person in "SELECT * FROM person"
Я проверял журналы, чтобы убедиться, что база данных подключена, это не ошибка. В браузере для SQLite тоже есть таблица, сама база данных лежит в активах

Подробнее здесь: https://stackoverflow.com/questions/790 ... rom-person
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»