2

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 和插入的 SQL,它们工作正常,这里会发生什么?

4

2 回答 2

1

您的文本文件以 UTF-8 编码,并使用在开头插入字节顺序标记的程序创建。

Java/Android 运行时在读取文件时不会删除此字符;你必须自己做。
(此行为是故意的;请参阅UTF-8 encoding does not identify initial BOM and UTF-8 decoder processing of byte-order mark has changed。)

于 2013-01-17T08:53:42.090 回答
0

确保 sql 语句为 Single(SQL 语句前有空格,后有空格)

于 2013-01-16T01:53:06.023 回答