java .lang.RuntimeException: не удается запустить действие. ComponentInfo: Sqlite exception "error - PullRequest
0 голосов
/ 11 марта 2020

, пока я пытаюсь запустить свое приложение, оно падает, и я получаю эту ошибку "java.lang.RuntimeException: Unable to start activity ComponentInfo: Sqlite exception". Пожалуйста, помогите мне найти мою ошибку. вот снимок моего кода:

@Override
public void onCreate(SQLiteDatabase db) {
    this.db = db;
    final String SQL_CREATE_QUESTIONS_TABLE =
            "CREATE TABLE " +
            questiontable.TABLE_NAME + " ( " +
            questiontable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            questiontable.COLUMN_QUESTION + "TEXT," +
            questiontable.COLUMN_OPTION1 + " TEXT," +
            questiontable.COLUMN_OPTION2 + " TEXT," +
            questiontable.COLUMN_OPTION3 + " TEXT," +
            questiontable.COLUMN_OPTION4 + " TEXT," +
            questiontable.COLUMN_ANSWER_NR + "INTEGER" +
            ")";
    db.execSQL(SQL_CREATE_QUESTIONS_TABLE);
    fillquestionstable();
}'''

вот logcat:

Process: com.example.modaltest, PID: 6534
java.lang.RuntimeException: Unable to startactivityComponentInfo{com.example.modaltest/com.example.modaltest.quiz}:android.database.sqlite.SQLiteException: near ".": syntax error (code 1): , while compiling: CREATE TABLE quiz_questions ( _id INTEGER PRIMARY KEY AUTOINCREMENT,com.example.modaltest.questionTEXT,option1 TEXT,option2 TEXT,option3 TEXT,option4 TEXT,answer_nrINTEGER)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
    at android.app.ActivityThread.-wrap12(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6077)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)at 
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Ответы [ 5 ]

1 голос
/ 11 марта 2020

Вы должны изменить эту строку

questiontable.COLUMN_QUESTION + "TEXT," + на questiontable.COLUMN_QUESTION + " TEXT," +

пробел до TEXT

0 голосов
/ 11 марта 2020

В вашем запросе есть две ошибки.

1. Первая строка questiontable.COLUMN_QUESTION + "TEXT," +

будет (укажите пробел перед TEXT )

questiontable.COLUMN_QUESTION + " TEXT," +

2. Последняя строка questiontable.COLUMN_ANSWER_NR + "INTEGER" +

будет (дать пробел до INTEGER )

questiontable.COLUMN_ANSWER_NR + " INTEGER" +

Спасибо.

0 голосов
/ 11 марта 2020

В запросе 3 ошибки.

Во-первых, вы используете точки в имени столбца, указанном в questiontable.COLUMN_QUESTION . В вашем примере кажется, что вы используете « com.example.modaltest.question » в качестве имени столбца, которое не может работать.

  1. Только буквы алфавита c и подчеркивание разрешены для имен столбцов.
  2. Имя столбца всегда должно начинаться с буквенного символа или подчеркивания.

Итак, вам нужно заменить «com.example.modaltest.question» на правильное имя столбца, которое не имеет точки.

Две другие ошибки связаны с пробелами. В следующих объявлениях вам нужно включить пробел между именем столбца и типом столбца, как вы делали с другими объявлениями столбцов:

questiontable.COLUMN_QUESTION + "TEXT,"

и

questiontable.COLUMN_ANSWER_NR + "INTEGER"

Должно быть "TEXT" и "INTEGER" , обратите внимание на пробел в начале каждой строки. "

0 голосов
/ 11 марта 2020
  questiontable.COLUMN_QUESTION + " TEXT," +

Проблема в том, что в вашей строке нет расстояния между questiontable.COLUMN_QUESTION и TEXT, в результате чего они объединяются в одну строку, что привело к ошибке

0 голосов
/ 11 марта 2020

У вас есть ошибка в запросе, проверьте это

final String SQL_CREATE_QUESTIONS_TABLE =
        "CREATE TABLE " +
        questiontable.TABLE_NAME + " ( " +
        questiontable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
        questiontable.COLUMN_QUESTION + " TEXT," +
        questiontable.COLUMN_OPTION1 + " TEXT," +
        questiontable.COLUMN_OPTION2 + " TEXT," +
        questiontable.COLUMN_OPTION3 + " TEXT," +
        questiontable.COLUMN_OPTION4 + " TEXT," +
        questiontable.COLUMN_ANSWER_NR + "INTEGER" +
        ")";
...