我開發一個應用程序Android
這在我在資產一個SQLite
轉儲文件,我試圖創建使用轉儲在用戶的電話數據庫轉儲文件。SQLiteException語法錯誤打破試圖讀取從資產
問題是,它是一個包含SQL命令包括換行符這樣長的轉儲文件:
CREATE TABLE [tblType] (
[IdType] INTEGER NOT NULL ON CONFLICT ROLLBACK PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT,
[Type] NVARCHAR);
所以,當我嘗試使用SQLiteOpenHelper
創建數據庫:
SQLiteOpenHelper openHelper0 = new DbHelper(this);
Cursor cu = null;
try {
cu = openHelper0.getReadableDatabase().rawQuery("select IdWord,Word from tblWord", null);
} catch (Exception e) {
e.printStackTrace();
}
我得到的語法錯誤在每一行,包括換行符:
android.database.sqlite.SQLiteException:近 「(」:SY ntax錯誤(代碼 1),而編譯:CREATE TABLE [tblType(
如果我刪除第一線斷線,我得到:
android.database.sqlite.SQLiteException:近「」:語法錯誤(代碼 1):在編譯:CREATE TABLE [tblType]([IdType] INTEGER NOT NULL ON CONFLICT ROLLBACK PRIMARY KEY ON CONFLICT ROLLBACK AUTOINCREMENT,
正如我說這是一個很大的轉儲,我不能手動刪除所有的linebreaks;所以問題是有沒有像配置或額外的代碼,使Android
忽略換行的方式?
這是DBHelper
主要代碼:
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
try {
InputStream is = activity.getAssets().open("am.sql");
Scanner scanner = new Scanner(is).useDelimiter("\n");
while (scanner.hasNext()) {
sqLiteDatabase.execSQL(scanner.next());
}
is.close();
} catch (IOException ex){
}
}
如果我在表格內容中有一些';'會怎麼樣? –
緊接着換行符?然後你必須解析SQL。 –
因此,如果內容中的';'沒有跟着換行,我可以使用'; \ n'作爲分隔符,比如'new Scanner(is).useDelimiter(「; \ n」);'? –