SQL是
INSERT INTO "quotes" VALUES(1,1,1,'This is a quote','This is a quote in german','By Me','jackson',1,1,1305587611,'0','Thriller');
我从文本文件中读取后使用db.execSQL来执行此行。
InputStream is = myContext.getResources().openRawResource(R.raw.quotesinsert);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String readLine = null;
db.execSQL(QUOTE_DB_CREATE);
while ((readLine = br.readLine()) != null) {
db.execSQL(readLine);
}
这适用于Android的所有其他版本,但在ICS(4.0.4)上崩溃
01-14 02:07:46.271: E/AndroidRuntime(1802): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.foo.quotesapp/com.foo.quotesapp.QuoteList}: android.database.sqlite.SQLiteException: near "?INSERT": syntax error
我已经尝试了在单独的SQLite程序中创建表和插入的SQL,它们工作正常,可能会发生什么?
答案 0 :(得分:1)
您的文本文件采用UTF-8编码,并使用在开头插入byte order mark的程序创建。
从文件读取时,Java / Android运行时不会删除此字符;你必须自己做这件事 (这种行为是故意的;请参阅UTF-8 encoding does not recognize initial BOM和UTF-8 decoder handling of byte-order mark has changed。)
答案 1 :(得分:0)
确保sql语句为Single(SQL语句之前的空格和空格)