2013-05-28 2 views
1

Я был немного удивлен, читая документ для SQLiteDatabase.execSQL. В нем указано, что «Несколько операторов, разделенных точкой с запятой, не поддерживаются».Android SQLiteDatabase.execSQL: несколько операторов, разделенных точкой с запятой, не поддерживаются?

Я не удивлюсь, если читать его раньше, но мое приложение использует команду как:

private static final String CREATE_TABLE = 
    "create table " 
    + TABLENAME + "(" 
    + COLUMN_ID  + " integer primary key autoincrement, " 
    + COLUMN_CODE + " text not null," 
    + COLUMN_NAME + " text not null," 
    + COLUMN_STOCK + " integer," 
    + COLUMN_PRICE + " real," 
    + COLUMN_LISTPRICE + " real" 
    + ");" 
    + "create index " 
    + TABLENAME + "_idx on " + TABLENAME 
    + "(" + COLUMN_NAME + ", " 
      + COLUMN_STOCK + ", " 
      + COLUMN_PRICE 
    + ");"; 

... 
database.execSQL(CREATE_TABLE); 

я не заметил каких-либо ошибок или исключение (или я не заметил). Означает ли это, что индекс в моем заявлении не был создан? Или это неправильно?

+0

Для удобства чтения я разделил строки и использовал транзакции, чтобы предотвратить штраф за производительность. – RvdK

+0

Спасибо RvdK. Я уже это сделал, потому что иногда хочу иногда указывать и воссоздавать индекс. Тем не менее, документ говорит, что он вообще не поддерживается. Вот в чем вопрос. ;) В любом случае, как транзакция может улучшить это? – pepr

+0

Если они так говорят, я склонен верить в это ^^ (почему это, я не знаю). Если вы выполните несколько execSQL одновременно, это будет быстрее, если вы начнете с beginTransaction, 2x execSQL, а затем endTransaction. Сначала проверьте, если необходимо;) – RvdK

ответ

-2

Проверьте свою конкатенацию между строками и убедитесь, что вы оставили пробел между строковой переменной. например, «CREATE TABLE» + TABLE_NAME »(« + COLUMN_ID + »INTEGER» + COLUMN_NAME + «TEXT)»

+1

Извините, я не понимаю вашего комментария. На мой взгляд, это совершенно не связано с вопросом. – pepr

+0

Пример OP синтаксически правильный ... – TWiStErRob

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