Изменение: -
public void onCreate(SQLiteDatabase db){
String CREATE_TABLE = "CREATE TABLE" + TABLE_CONTACTS + "(" + nomber +
"INTEGER PRIMARYKEY," + namapen + "TEXT," + idPen + "INTEGER,"
+ namaGej + "TEXT," + idGej + "TEXT )";
db.execSQL(CREATE_TABLE);
}
до
public void onCreate(SQLiteDatabase db){
String CREATE_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + nomber +
" INTEGER PRIMARY KEY," + namapen + " TEXT," + idPen + " INTEGER,"
+ namaGej + " TEXT," + idGej + " TEXT )";
db.execSQL(CREATE_TABLE);
}
Тогда либо: -
- удалить данные приложения или
- удалить приложение
, а затем перезапустите приложение.
Пояснения
Причина, по которой проблема не возникла, пока вы не попытались вставить, заключается в том, что это была бы первая попытка открытия базы данных. Создание экземпляра Database Helper не приводит к созданию базы данных (т.е. выполняется метод onCreate , onCreate автоматически выполняется только при попытке открыть базу данных (неявно с вставка) и база данных на самом деле не существует).
Причина, по которой данные приложения должны быть удалены (или приложение удалено, что приведет к удалению данных приложения), заключается в том, что при этом удаляется база данных и, таким образом, запускается метод onCreate (он не запустить, когда база данных существует).
Фактическая ошибка заключается в том, что CREATE ожидает тип того, что должно быть создано в вашем случае CREATE TABLE table_name
, в то время как SQL-код, который вы указали в CREATE TABLEtb_penyakit
, поэтому вы пытаетесь указать ему создать CREATE TABLEtb_penyakit и в SQlite нет такой вещи как CREATE TABLEtb_penyakit .
Без других пробелов, добавленных выше, таблица была бы создана, но столбцы были бы: -
![enter image description here](https://i.stack.imgur.com/Wc6h5.png)
В этом случае вставка не удалась бы, поскольку ожидаемые вами столбцы не существовали бы.