SQLiteException: няма такава таблица: (код 1)

Опитвам се да изпълня SQL заявка чрез android - и в момента не мога да го направя. Получавам фатална грешка и приложението се затваря при опит за изпълнение на проста заявка, за която съм проверил, че е валидна: SELECT * FROM TblMovie WHERE MovieYear = 1975

Въпреки това - когато се опитам да го направя в приложението си:

Основна дейност:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    dbhelper = new DBHelper(this);

    List<String> list = dbhelper.getData();

    TextView textView1 = (TextView) findViewById(R.id.textView1);
    TextView textView2 = (TextView) findViewById(R.id.textView2);


    textView1.setText(list.get(0));
    textView2.setText(list.get(1));

...

DBHelper:

 public List<String> getData() {  
     db = this.getReadableDatabase();  
     List<String> data = new ArrayList<String>();  
     Cursor c = db.rawQuery("SELECT * FROM TblMovie WHERE MovieYear = 1975", null);  
     while (c.moveToNext()) {  
         data.add(c.getString(0));  
         data.add(c.getString(1));



     }  
     c.close();  
     db.close();  
     return data;  
    }

Logcat:

05-19 10:24:59.983: E/AndroidRuntime(24736): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.MainActivity}: android.database.sqlite.SQLiteException: no such table: TblMovie (code 1): , while compiling: SELECT * FROM TblMovie WHERE MovieYear = 1975



http://pastebin.com/0mAD87jJ

Също така - намерих тази статия като справка:

Няма такава таблица: (код 1) по време на компилиране: ИЗБЕРЕТЕ * ОТ събитие

Опитах да го стартирам на моя таблет вместо емулатора - пак не работи. Опитах също да изчистя данни - това също не работи. Имам базата данни в моята папка с активи, така че не съм сигурен защо не работи.

РЕДАКТИРАНЕ:

Защо гласуването против? Почти съм сигурен, че това е валиден и не особено написан/документиран/проучен проблем.

Екранна снимка на DB:

https://i.stack.imgur.com/IwkDQ.png


person Jackie Deezner    schedule 19.05.2015    source източник
comment
проверете този въпрос: stackoverflow.com/questions/513084/   -  person samgak    schedule 19.05.2015
comment
Предлагам да деинсталирате и инсталирате приложението отново.   -  person AAnkit    schedule 19.05.2015
comment
Да, това е добро предложение @AAnkit и ако не проработи, ПУБЛИКУВАЙТЕ своята заявка за СЪЗДАВАНЕ НА ТАБЛИЦА.   -  person theapache64    schedule 19.05.2015
comment
Показва ви кода CREATE TABLE. Изглежда има грешка в тази инструкция.   -  person Phantômaxx    schedule 19.05.2015
comment
Деинсталирах и преинсталирах - все още се срива. Използвам предварително създадена база данни в моята папка с активи - не използвам CREATE TABLE код :)   -  person Jackie Deezner    schedule 19.05.2015
comment
Така че просто няма таблица TblMovie във вашата база данни: no such table: TblMovie   -  person Phantômaxx    schedule 19.05.2015
comment
използвайте инструмента sqlite (в sdk/платформените инструменти), за да проверите таблиците и тяхната структура в базата данни.   -  person AAnkit    schedule 19.05.2015
comment
Тогава подозирам, че OpenHelper не сочи към правилната база данни. Можете ли да редактирате с кода от onCreate() във вашия клас SQLiteOpenHelper?   -  person AdamMc331    schedule 29.05.2015


Отговори (2)


Имате ли функция onCreate, дефинирана със скрипт за създаване? следният урок от google обяснява това подробно: http://developer.android.com/guide/topics/data/data-storage.html#db

person timwashere    schedule 19.05.2015
comment
Използвам предварително създадена база данни в моята папка с активи - не желая да използвам скрипт за създаване. - person Jackie Deezner; 19.05.2015
comment
сигурни ли сте, че главните букви са правилни? може би искате да опитате да поставите имена около таблиците? - person timwashere; 20.05.2015

Опитайте тази:

String sql ="SELECT * FROM TblMovie WHERE MovieYear=?";
Cursor c = db.rawQuery(sql, new String[]{ String.valueOf(1975) });
person Robust    schedule 19.05.2015
comment
Опитах го - резултатът е SQLiteException: няма такава таблица: TblMovie (код 1): , докато компилирам: SELECT * FROM TblMovie WHERE MovieYear=? - person Jackie Deezner; 19.05.2015
comment
о, вашата маса не съществува. - person Robust; 19.05.2015
comment
Моята таблица съществува... тя е в база данни в папката ми с активи - person Jackie Deezner; 19.05.2015
comment
ах, трябва да копирате тази база данни в приложението, преди да я използвате. Не можете да четете база данни от папка с активи чрез DatabaseHelper - person Robust; 19.05.2015