閱讀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);
我沒有發現任何錯誤或異常(或者我沒有注意到)。這是否意味着我的聲明中的索引沒有創建?或者是文件錯誤?
爲了便於閱讀,我將字符串拆分並使用事務來防止性能損失。 – RvdK
謝謝RvdK。我已經這樣做了,因爲我有時想刪除並重新創建索引。但是,該文件表示完全不支持。就是那個問題。 ;)無論如何,交易如何改善? – pepr
如果他們的文檔是這樣說的,我傾向於相信它(爲什麼是這樣,我不知道)。如果您同時執行多個execSQL,則以beginTransaction,2x execSQL和endTransaction開頭會更快。首先檢查是否需要;) – RvdK