2011-10-24 16 views
0

私はアンドロイドのアプリケーションで問題に直面しています。次のスクリプトでデータベースを作成したいと思います。 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); 

と私のアンドロイドコードが

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

私の推測あなたはBOOLEAN & TINYINTタイプを使用していることだろうサポートされていません。代わりにINTEGERを使用する必要があります

+0

sqlliteエディタで確認クエリがSQLLITEpro 2009にありますそれは私のアンドロイドアプリケーションでうまく動作していません。 – Altaf

+0

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

+0

これは明らかに(セクション2.2)、それらはパーサーによってサポートされています。それらは単にNUMERICとINTEGERにそれぞれマップされます。 –

1

私のスキーマの最後のセミコロンの後の空白のためにこの問題が発生しました。私のJavaコードは、その空白を別のクエリとして実行していました。

フロイエでは、アイスクリームサンドイッチに問題はありません。

+0

私は、タブレットの最後のセミコロンの後の空白と同じ問題を見ました。それは、Jelly Beanで、android.database.sqlite.SQLiteExceptionをスローします。エラーではなく、Honeycomb上で完璧に動作します。 –