Android Класс вылетает, не знаю почему - PullRequest
1 голос
/ 03 апреля 2012

Я пытаюсь создать класс, который будет отображать содержимое базы данных, и я использовал Tutorial , чтобы узнать, как это сделать. после прохождения урока я подумал, что у меня есть метод f, показывающий содержимое базы данных.

вот класс, который не будет работать:

public class WorkoutProgress extends ListActivity {
private DataBaseHelper datasource;
@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.progress);

    datasource = new DataBaseHelper(this);
    datasource.open();
    fillData();
    datasource.close();
}
 private void fillData() {
        // Get all of the notes from the database and create the item list
        Cursor c = datasource.getAllTitles();
        startManagingCursor(c);

        String[] from = new String[] { DataBaseHelper.KEY_TITLE };
        int[] to = new int[] { R.id.text1 };

        // Now create an array adapter and set it to display using our row
        SimpleCursorAdapter notes =
            new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
        setListAdapter(notes);
    }

}

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

04-03 14: 31: 25.556: ОШИБКА / База данных (14884): ошибка 1 (рядом с «tableacts»: синтаксическая ошибка) при подготовке «создания таблиц» (автоинкремент первичного ключа id2integer, дата-текст не нулевая, текст шагов нет) ноль, текст калорий не ноль); '. 04-03 14: 31: 25.556: DEBUG / AndroidRuntime (14884): выключение виртуальной машины 04-03 14: 31: 25.556: WARN / dalvikvm (14884): threadid = 1: поток завершается с необработанным исключением (группа = 0x400259f8) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.b00348312.workout / com.b00348312.workout.WorkoutProgress}: android.database.sqlite.SQLiteException : рядом с "tableacts": синтаксическая ошибка: создать tableacts (автоинкремент первичного ключа id2integer, datetext не нулевой, текст шагов не нулевой, текст калорий не нулевой); 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2787) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2803) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:135) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2136) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.os.Handler.dispatchMessage (Handler.java:99) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.os.Looper.loop (Looper.java:144) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread.main (ActivityThread.java:4937) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на java.lang.reflect.Method.invokeNative (собственный метод) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): в java.lang.reflect.Method.invoke (Method.java:521) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:616) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): в dalvik.system.NativeStart.main (собственный метод) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): вызвано: android.database.sqlite.SQLiteException: рядом с «tableacts»: синтаксическая ошибка: создание табличных действий (автоинкремент первичного ключа id2integer, дата-текст не ноль, текст шагов не ноль, текст калорий не нуль); 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): в android.database.sqlite.SQLiteDatabase.native_execSQL (собственный метод) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): в android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1817) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на com.b00348312.workout.DataBaseHelper $ DatabaseHelper.onCreate (DataBaseHelper.java:60) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): в android.database.sqlite.SQLiteOpenHelper.getWritableDatabase (SQLiteOpenHelper.java:106) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на com.b00348312.workout.DataBaseHelper.open (DataBaseHelper.java:78) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на com.b00348312.workout.WorkoutProgress.onCreate (WorkoutProgress.java:25) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1069)04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2751) 04-03 14: 31: 25.566: ОШИБКА / AndroidRuntime (14884): ... еще 11

1 Ответ

3 голосов
/ 03 апреля 2012

Оставьте несколько пробелов в строке, где вы объявляете строку создания базы данных (возможно, в методе onCreate SQLiteOpenHelper):

id2integer автоинкремент первичного ключа, datetext не ноль, текст шагов не ноль, текст калорий не ноль

Проверьте строку выше и поставьте несколько пробелов после id2 и date (первый и второйстолбец таблицы базы данных).

...