2015-11-13 3 views
1

Я новичок здесь (и в программировании в целом) и надеялся, что вы сможете мне помочь в этом. Когда я пытаюсь запустить приложение, он просто «останавливается». Я просмотрел все подобные вопросы здесь, но не смог его решить. Это мой код:Andorid Studio SQLiteException: синтаксическая ошибка (код 1) при компиляции

package com.example.me.mac_xyz; 

    import android.content.Context; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHelper extends SQLiteOpenHelper { 
public static final String DATABASE_NAME = "mac.db"; 
public static final String TABLE_NAME = "1"; 
public static final String COL_1 = "NUMBER"; 
public static final String COL_2 = "MAC"; 
public static final String COL_3 = "X"; 
public static final String COL_4 = "Y"; 
public static final String COL_5 = "Z"; 

/* Constructor*/ 
public DatabaseHelper(Context context) { /*, String name, SQLiteDatabase.CursorFactory factory, int version*/ 
    super(context, DATABASE_NAME, null, 1); 
    SQLiteDatabase db = this.getWritableDatabase(); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table" + TABLE_NAME +"(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER)"); 

} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL("DROP TABLE IF EXISTS" +TABLE_NAME); 
    onCreate(db); 
} 

И это в журнале:

11-12 22:34:47.706 31044-31044/com.example.me.mac_xyz E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.example.me.mac_xyz, PID: 31044 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.me.mac_xyz/com.example.me.mac_xyz.MainActivity}: android.database.sqlite.SQLiteException: near "table1": syntax error (code 1): , while compiling: create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5001) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.database.sqlite.SQLiteException: near "table1": syntax error (code 1): , while compiling: create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER) 
     * * * 

Что я сделал не так?

+0

изменения 'db.execSQL («создать таблицу»' в 'db.execSQL («создать таблицу»' – Hoo

ответ

4

Проблема с вашим оператором SQL. Это как ваш SQL запрос выглядит как андроида системы:

create table1(NUMBER INTEGER PRIMARY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER). 
Change query to : 
create table table_name (NUMBER INTEGER PRIMARY KEY,MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER) 

Изменение OnCreate как:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME + 
       " (NUMBER INTEGER PRIMARY KEY, 
       MAC TEXT,X INTEGER,Y INTEGER,Z INTEGER);"); 

} 

Примечание: Имя таблицы не может быть числовым, следовательно, изменить его к действительному имени таблицы. См: What are valid table names in SQLite?

+0

Привет и спасибо за предложение, но я боюсь, что это не работает ... У у вас есть какие-то другие идеи? Мне нужно составить таблицу с 5 столбцами и около 80 строк и подумать, что SQLite DB - лучший способ сделать это. Знаете ли вы, что у вас есть другой способ? –

+0

Проблема с Ват, с которой вы сталкиваетесь с db ? – abhishesh

Смежные вопросы