Android-исключение SQLite рядом с "/" - PullRequest
0 голосов
/ 19 марта 2012

Когда я запускаю свой код, невозможно запустить действие ComponentInfo: android.database.sqlite.SQLiteException: near "/": синтаксическая ошибка ..

Почему это не работает?Спасибо всем заранее .. Вот мой класс помощника

public class Helper extends SQLiteOpenHelper{

public static final String MYDATABASE_TABLE = "Restaurant";
public static final String KEY_ID = "_id";
public static final String KEY_CONTENT1 = "Restaurant name";
public static final String KEY_CONTENT2 = "Ac/non ac";
public static final String KEY_CONTENT3 = "Total chairs";
public static final String KEY_CONTENT4 = "Reserved chairs";
public static final String KEY_CONTENT5 = "Date";
public static final String KEY_CONTENT6 = "fromTime"; 
public static final String KEY_CONTENT7 = "toTime"; 
public static final String KEY_CONTENT8 = "Name";
public static final String KEY_CONTENT9 = "Contact Number";
public static final String KEY_CONTENT10 = "Table id";


private static final String SCRIPT_CREATE_DATABASE =
      "create table " + MYDATABASE_TABLE + " ("
      + KEY_ID + " integer primary key autoincrement, "
      + KEY_CONTENT1 + " text not null, "
      + KEY_CONTENT2 + " text not null, "
      + KEY_CONTENT3 + " integer not null, "
      + KEY_CONTENT4 + " integer not null, "
      + KEY_CONTENT5 + " text not null, "
      + KEY_CONTENT6 + " text not null, "
      + KEY_CONTENT7 + " text not null, "
      + KEY_CONTENT8 + " text not null, "
      + KEY_CONTENT9 + " text not null, "
      + KEY_CONTENT10 + " text not null) ";


public Helper(Context context, String name, CursorFactory factory,
        int version) {
    super(context, name, factory, version);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(SCRIPT_CREATE_DATABASE);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}

Ответы [ 3 ]

1 голос
/ 19 марта 2012

Имена таблиц и столбцов в SQLite не могут содержать /, и вы пытаетесь вызвать столбец Ac/non ac.

Поддержка специальных символов в именах таблиц и столбцов в SQLite в целом немного схематична, поэтому я также рекомендую использовать замену пробелов в именах столбцов на _. Альтернатива заключается в том, чтобы заключить их в кавычки, но это может / не может работать в зависимости от версии SQLite.

0 голосов
/ 19 марта 2012

Или замените его на юникод. U + 002F

0 голосов
/ 19 марта 2012

Попробуйте переименовать KEY_CONTENT2, чтобы в нем не было символа «/».Я думаю, что '/' недопустимы в именах.А также уберите все пробелы из имен.

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