2011-10-24 74 views
0

我在android應用程序中遇到問題,我想用下面的腳本創建數據庫。SQLite和Android異常

CREATE TABLE IF NOT EXISTS events (
_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
source_device_id INT, 
timestamp INT NOT NULL, 
processed BOOLEAN DEFAULT FALSE, 
event_type TINYINT NOT NULL, 
payload BLOB); 

CREATE INDEX IF NOT EXISTS events_unprocessed ON events (processed, _id); 

和我的Android代碼

public void onCreate(SQLiteDatabase db) { 
    InputStream schemaStream = context.getResources().openRawResource(R.raw.logdb_schema); 
    Scanner schemaScanner = new Scanner(schemaStream, "UTF-8"); 
    schemaScanner.useDelimiter(";"); 

    Log.i(TAG, "Creating database"); 
    try { 
    db.beginTransaction(); 
    while (schemaScanner.hasNext()) { 
     String statement = schemaScanner.next(); 
     Log.d(TAG, "Creating database: " + statement); 
     db.execSQL(statement); 
    } 
    db.setTransactionSuccessful(); 
    } 
    finally { 
    db.endTransaction(); 
    } 
} 

它不工作其發電運行時異常:

android.database.sqlite.SQLiteException: not an error:

+2

*什麼*運行時異常?如果您需要幫助,我們需要詳細信息。 –

+0

android.database.sqlite.SQLiteException:不是錯誤 – Altaf

+0

如果我使用'sqlite3'命令它可以工作。這不可能是整個錯誤,必須有更多。請檢查您的[logcat輸出](http://developer.android.com/guide/developing/debugging/debugging-log.html#startingLogcat),並將其發佈在這裏... – Knickedi

回答

-1

我的猜測是,你正在使用一個布爾& TINYINT類型加以不支持。你需要使用INTEGER來代替

+0

我已經在sqllite編輯器中檢查查詢,例如SQLLITEpro 2009它在我的Android應用程序中的工作正常,它不工作 – Altaf

+0

http://www.sqlite.org/datatype3.html – Joe

+0

它清楚地表明(2.2節),那些解析器支持它們。它們分別映射到NUMERIC和INTEGER。 –

1

我有這個問題,因爲我的模式中最後一個分號後的空格。我的java代碼正在執行該空白作爲一個單獨的查詢。

在Froyo它抱怨,在冰淇淋三明治,它不會造成問題。

+0

我看到了平板電腦上最後一個分號後的空白問題:在Jelly Bean上拋出android.database.sqlite.SQLiteException:在Honeycomb上沒有錯誤,它完美地工作 –