произошла ошибка при попытке вставить данные в sqlte - PullRequest
2 голосов
/ 27 марта 2019

Итак, я недавно узнал, как вставлять данные в Android с помощью sqlite, и произошла эта ошибка, я не знаю, почему произошла эта ошибка, я попытался перечитать мою книгу, и у меня нет никакого решения от нее.

Я перечитал книгу и нашел проблему в Интернете.

SQLiteDatabase db;
public DBAdapter(Context context,String name, SQLiteDatabase.CursorFactory 
factory, int version){
    super(context,DATABASE_NAME,factory,DATABASE_VERSION);
}

@Override
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);
  }

Ошибка в logcat:

Process: com.example.lordbramasta.pakar, PID: 20404
    android.database.sqlite.SQLiteException: near "TABLEtb_penyakit": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLEtb_penyakit(nomberINTEGER PRIMARYKEY,namapenTEXT,idPenINTEGER,namaGejTEXT,idGejTEXT )
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:901)

Я ожидал вставить данные в базу данных sqlite..

1 Ответ

2 голосов
/ 27 марта 2019

Изменение: -

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

В этом случае вставка не удалась бы, поскольку ожидаемые вами столбцы не существовали бы.

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