нет такого столбца: _id (код 1): при компиляции: SELECT _id, Имя, Возраст, пол, зарплата, тема ОТ учителей - PullRequest
0 голосов
/ 10 марта 2019

моя fetch(); функция

public Cursor fetch() {
    String[] columns = new String[] { databaseHelper.teacher_ID,databaseHelper.teacher_Name,databaseHelper.Age,databaseHelper.Gender,databaseHelper.Salary,databaseHelper.subject};
    Cursor cursor = database.query(databaseHelper.Table_Name, columns, null, null, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();
    }
    return cursor;
}

моя главная, где я ее называю

  final String [] from =new String[]{databaseHelper.teacher_ID,databaseHelper.teacher_Name,databaseHelper.Gender,databaseHelper.Age,databaseHelper.subject,databaseHelper.Salary
};

final int [] to =new int[]{R.id.id,R.id.name,R.id.age,R.id.gender,R.id.salary,R.id.subject};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    dbManger=new DBManger(this);
    dbManger.open();

    Cursor cursor= dbManger.fetch();

и вот моя таблица

public final static String Table_Name="Teachers";

public static final String teacher_ID="_id";


public static final String teacher_Name="Name";


public static final String subject="subject";


public static final String Salary="salary";


public static final String Gender="gender";


public static final String Age="Age";

public final static StringDB_Name = "Школа";

public  static final int Version=1;


private static final String Create_table="create table "+ Table_Name + "(" + teacher_ID +" INTEGER PRIMARY KEY AUTOINCREMENT , "+ teacher_Name +" TEXT NOT NULL, "+ subject +" TEXT NOT NULL , "+
Salary +" INTEGER NOT NULL , "+Gender+" TEXT NOT NULL, "+ Age+ " INTEGER NOT NULL);";

1 Ответ

0 голосов
/ 10 марта 2019

Учитывая, что Create_table преобразуется в строку

create table Teachers(
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    Name TEXT NOT NULL, 
    subject TEXT NOT NULL, 
    salary INTEGER NOT NULL, 
    gender TEXT NOT NULL, 
    Age INTEGER NOT NULL
);

Что является допустимым рабочим SQL, то наиболее вероятная причина, по которой столбец не был найден, заключается в том, что вышеупомянутый SQL фактически не использовался.

Одна из наиболее распространенных (если не самая распространенная) причина связана с неправильным пониманием метода onCreate в Помощнике по базам данных (класс, являющийся подклассом SQLiteOpenHelper).

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

Таким образом, если в структуру базы данных будут внесены изменения (например, добавлены новые столбцы), это изменение не будет отражено, если база данных не будет удалена

  • Если метод onUpgrade следует типичному удалению таблиц, затем вызвать метод onCreate , это также приведет к воссозданию таблиц.

Исправление вашей проблемы, вероятно, заключается в том, чтобы сделать одно из следующего: -

  • Удалить / очистить данные приложения из настроек
  • Удалить приложение

, а затем перезапустить приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...