任何人都可以解释原因:
db.execSQL("DROP TABLE IF EXISTS Definition;");
db.execSQL("CREATE TABLE Definition (txt TEXT);");
运作良好,但
db.execSQL("DROP TABLE IF EXISTS Definition; CREATE TABLE Definition (txt TEXT);");
执行 NOTHING (此执行后没有表“定义”)。
(db是SQLiteDatabase的实例)
P.S。在iOS中,两种变体完全相同。以及SQLite管理器(Firefox附加组件)。
答案 0 :(得分:4)
SQLite不希望一次执行多个命令。我将所有命令写入文本文件,读取行直到“;”满足并在循环中逐个执行,直到readLine为空;
List<String> sqlExpressions = new ArrayList<String>();
try {
// read table creation sql script from the file
InputStream inStream = mContext.getResources().getAssets().open("createTables.sql");
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "UTF-8"));
String line = null;
while((line = reader.readLine()) != null) {
sb.append(line + "\n");
if(line.lastIndexOf(";") > 0) {
sqlExpressions.add(sb.toString());
sb = new StringBuilder();
}
}
reader.close();
} catch (Exception e) {
Log.d("DB_Creation", e.getMessage());
}
for (String sqlExpr : sqlExpressions) {
database.execSQL(sqlExpr);
}