2015-04-22 2 views
0

Я хочу создать БД. Вот DBHelperAndroid DB - Ошибка синтаксиса

public class DBHelper extends SQLiteOpenHelper { 

String TAG = Const.TAG_DB_HELPER; 

public DBHelper(Context context) { 
    super(context, Const.DB_TABLE_NAME, null, 1); 
} 

public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + Const.DB_TABLE_NAME + " (" 
      + Const.DB_COLUMN_ID_NAME + " integer primary key autoincrement," 
      + Const.DB_COLUMN_NAME_NAME + " text," 
      + Const.DB_COLUMN_FROM_NAME + " text," 
      + Const.DB_COLUMN_TO_NAME + " text," 
      + Const.DB_COLUMN_DAYS_NAME + " text," 
      + Const.DB_COLUMN_SOUND_NAME + " text," 
      + Const.DB_COLUMN_INDICATOR_NAME + " text);"); 

    Log.w(TAG, "Database '" + Const.DB_TABLE_NAME + "' created successfully!"); 
} 

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

} 

Вот vars:

static String DB_TABLE_NAME = "timetables"; 
static String DB_COLUMN_ID_NAME = "id"; 
static String DB_COLUMN_NAME_NAME = "name"; 
static String DB_COLUMN_DAYS_NAME = "days"; 
static String DB_COLUMN_FROM_NAME = "from"; 
static String DB_COLUMN_TO_NAME = "to"; 
static String DB_COLUMN_SOUND_NAME = "sound"; 
static String DB_COLUMN_INDICATOR_NAME = "indicator"; 

Но когда пришло время для создания БД я получил ошибку. Вот он:

android.database.sqlite.SQLiteException: near "from": syntax error (code 1): , while compiling: create table timetables (id integer primary key autoincrement,name text,from text,to text,days text,sound text,indicator text); 
     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
     at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1674) 
     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1605) 
     at ru.sergey.timetable.DBHelper.onCreate(DBHelper.java:21) 
     at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:251) 
     at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163) 
     at ru.sergey.timetable.Utils.addTimetableToDB(Utils.java:35) 
     at ru.sergey.timetable.AddTimetableActivity.onClick(AddTimetableActivity.java:132) 
     at android.view.View.performClick(View.java:4780) 
     at android.view.View$PerformClick.run(View.java:19866) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Как я понимаю, что-то не так с DBHelper, и оно находится рядом с колонкой «от», правильно? Но я проверил каждый символ. Есть идеи?

Спасибо заранее, SergaRUS

ответ

0

from и to являются зарезервированными ключевыми словами. Пожалуйста, выберите другие имена для этих столбцов.

+0

Да, спасибо большое. Теперь все работает – SergaRUS

+0

Добро пожаловать. Пожалуйста, отметьте мой ответ как принято. – cygery

0

from - ключевое слово SQL. Вы должны либо изменить имя столбца (который является лучшей практикой) или вы можете попробовать

static String DB_COLUMN_FROM_NAME = "`from`"; 
Смежные вопросы