#android #sqlite
#Android #sqlite
Вопрос:
моя 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";
общедоступная конечная статическая строка DB_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:
Учитывая, что 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 в Database Helper (класс, который является подклассом SQLiteOpenHelper).
Этот onCreate запускается автоматически только при создании самой базы данных, что происходит один раз, если база данных не удалена, и в этом случае метод onCreate будет запущен снова.
Таким образом, если в структуру баз данных внесены изменения (например, добавлены новые столбцы), то это изменение не будет отражено, если база данных не будет удалена
- Если метод onUpgrade следует типичному удалению таблиц, а затем вызывает метод onCreate, это также приведет к воссозданию таблиц.
Исправление вашей проблемы, скорее всего, будет заключаться в выполнении одного из следующих действий :-
- Удалите / очистите данные приложения из настроек
- Удалите приложение
а затем повторно запустить приложение.