Хобрук: Ваш путь к мастерству в программировании

Нет такой ошибки таблицы, что мне делать? СБОЙ ПРИЛОЖЕНИЯ ПРИ ЗАПУСКЕ

У меня возникла серьезная проблема с моим кодом. Я думаю, что моя таблица в моей базе данных в порядке. У меня есть три столбца: _id, jobNM, JobDetails, и я просмотрел все в течение нескольких недель, и я вернулся к этой же проблеме. Я получаю сообщение «Невозможно запустить активность ComponentInfo», а в Logcat написано «Вызвано: android.database.sqlite.SQLiteException: нет такой таблицы: задание (код 1): при компиляции: SELECT jobNM FROM job». У меня есть весь мой код ниже, а также логарифм, есть идеи?

[EDIT] вот несколько изображений браузера db DB для sqlite, а также путь к файлу

макет БД введите здесь описание изображения

Путь файла

введите здесь описание изображения

Основная деятельность

public class MainActivity extends AppCompatActivity {

    IntDataBaseHelper intDataBaseHelper;

    ListView lstJob;
    ArrayAdapter<String> mAdapter;





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

       intDataBaseHelper  = new IntDataBaseHelper(this);

        /*create instance of db helper and jobs
        Create the database (only if it doesn't exists)
        does so by copying from the assets */
       lstJob = (ListView) findViewById(R.id.lstJob);
        LoadJobList();
        if (CopyDBFromAssets.createDataBase(this,IntDataBaseHelper.DB_TABLE)) {
           // problem area
           // Get the data from the database

        ArrayList<String> jobs =  intDataBaseHelper.getJobList();
           for (String s : jobs) {
               Log.d("JobList ", "Found Job " + s);
              }
           } else {
               throw new RuntimeException("No Usable Database exists or was copied from the assets.");
           }

       }
      // loads job to screen
          public void LoadJobList() {
          ArrayList<String> JobList = intDataBaseHelper.getJobList();
          if (mAdapter == null) {
              mAdapter = new ArrayAdapter<>(this,R.layout.header,R.id.header);
              mAdapter = new ArrayAdapter<>(this,R.layout.row,R.id.BtnComplete,JobList);
              mAdapter = new ArrayAdapter<>(this, R.layout.row, R.id.Job_name,JobList);
              lstJob.setAdapter(mAdapter);
          } else
              {
              mAdapter.clear();
              mAdapter.addAll(JobList);
              mAdapter.notifyDataSetChanged();
          }
      }

}

IntDataBase

public class IntDataBaseHelper extends SQLiteOpenHelper{


   private static  String DB_PATH ="/data/data/com.example.joelg.clapp/databases";
   public static  String DB_NAME = "JobList";
   public static  String DB_COLUMN = "jobNM";
   public static  String DB_TABLE = "job";
   private static  String DB_JOB_DETAILS = "jobDetails";
   private static  String DB_ISDONE = "jobIsDone";
   private  Context jobContext;
   private SQLiteDatabase JobListDatabase;




       /**
        * constructor creater
        */
       public IntDataBaseHelper (Context context) {
           super (context, DB_NAME,null, 1);
           this.jobContext = context;
           DB_PATH = jobContext.getDatabasePath(DB_NAME).getPath();
       }


       public void OpenDataBase() {
           // open the database
           String JobListPath = DB_PATH;
           JobListDatabase = SQLiteDatabase.openDatabase(JobListPath,null,SQLiteDatabase.OPEN_READONLY);
       }


       // Getting Job Count
       public  ArrayList<String> getJobList() {
           ArrayList<String> JobList = new ArrayList<>();
           SQLiteDatabase db = this.getReadableDatabase();
           Cursor cursor =  db.query(DB_TABLE,new String[]
                   {DB_COLUMN},null,null,null,null,null);
               while(cursor.moveToNext()){
               int index = cursor.getColumnIndex(DB_COLUMN);
               JobList.add(cursor.getString(index));
           }

           cursor.close();
           db.close();
           return JobList;
       }


       // Gets the job state if it has been competed or not
   public ArrayList<String> getIsDone() {
       ArrayList<String>  IsDone = new ArrayList<>();
       SQLiteDatabase db = this.getReadableDatabase();
       Cursor cursor = db.query(DB_TABLE,new String[]{DB_ISDONE},null,null,null,null,null);
       while(cursor.moveToNext()){
           int index = cursor.getColumnIndex(DB_ISDONE);
           IsDone.add(cursor.getString(index));
       }

       cursor.close();
       db.close();
       return IsDone;
   }




       @Override
       public synchronized void close(){

           if(JobListDatabase !=null){
               JobListDatabase.close();
               super.close();

           }
       }
       @Override
       public  void onCreate(SQLiteDatabase db) {

       }
       @Override
       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       }
   }

ЛогКэт

11-08 04:13:20.874 13790-13790/com.example.joelg.clapp E/SQLiteLog: (1) no such table: job
11-08 04:13:20.876 13790-13790/com.example.joelg.clapp E/AndroidRuntime: FATAL EXCEPTIO:main
Process: com.example.joelg.clapp, PID: 13790
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.joelg.clapp/com.example.joelg.clapp.MainActivity}: android.database.sqlite.SQLiteException:no such table: job (code 1): , while compiling: SELECT jobNM FROM job
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6541)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
       Caused by: android.database.sqlite.SQLiteException: no such table: job (code 1): , while compiling: SELECT jobNM FROM job
    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1165)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1036)
    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1204)
    at com.example.joelg.clapp.IntDataBaseHelper.getJobList(IntDataBaseHelper.java:52)
    at com.example.joelg.clapp.MainActivity.LoadJobList(MainActivity.java:47)
    at com.example.joelg.clapp.MainActivity.onCreate(MainActivity.java:31)
    at android.app.Activity.performCreate(Activity.java:6975)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
    at android.app.ActivityThread.-wrap11(Unknown Source:0) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
    at android.os.Handler.dispatchMessage(Handler.java:105) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6541) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

  • Удалите приложение и установите снова 08.11.2017
  • Возможный дубликат Вызвано: android. database.sqlite.SQLiteException: такой таблицы нет: (код 1) Android 08.11.2017
  • я уже удалил и переустановил и это не дубликат приложение не работает ни на одном устройстве 08.11.2017
  • я не вижу метод OpenDataBase(). Вы не вызвали OpenDataBase() в своем вспомогательном классе перед выбором 08.11.2017
  • Вы должны использовать SQLiteAssetHelper. 08.11.2017
  • Если вы обновили свое приложение, оно могло прочитать старый файл SQLite, у меня была точно такая же проблема раньше, и я решил ее, изменив файл SQLite на новое имя файла. 09.11.2017
  • Iv удалил все файлы БД, и я собираюсь создать новый с нуля. Я должен поместить его в свой файл активов? 09.11.2017
  • хорошо, не повезло, я очистил все базы данных, и он не может найти таблицу списка вакансий. 09.11.2017
  • Вы переименовали файл БД? 09.11.2017
  • Я переименовал его в masterList в строке DB_NAME и в самом файле, и мне не повезло. 09.11.2017
  • Можете ли вы попытаться сбросить этот файл БД с телефона? stackoverflow.com /вопросы/4452538/ 09.11.2017
  • мм, я не думаю, что устройства, на которых мне это нужно, не поддерживают и SD-карту 09.11.2017
  • Вы по-прежнему можете сбросить файл БД во внутреннюю память телефона, например, в папку загрузки... 09.11.2017
  • @RRTW - это не то место, где частная статическая строка DB_PATH = /data/data/com.example.joelg.clapp/databases; делает ? 09.11.2017
  • Это ИСХОДНЫЙ путь, вы можете определить свой собственный ЦЕЛЕВОЙ путь к любой другой доступной папке. 09.11.2017

Ответы:


1

Используя проводник SQL-Lite, проверьте, существует ли таблица или нет, то есть есть ли вообще таблица

08.11.2017
  • вот что я сделал БД в нем есть 08.11.2017
  • Я добавил изображения, где все находится 09.11.2017

  • 2

    Я начал свое приложение, потому что оно становилось сложным и запутанным, и я понял, что у меня неправильный путь к базе данных.

    09.11.2017
    Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..