2017-10-25 13 views
1

私はCN1を使ってアプリケーションを作成しました。これはsqlite dbにアクセスします。 Netbeansを使用してエミュレータでアプリケーションを実行すると、完全に動作します。しかし、私は実際のデバイス上のDBに接続しようとすると、私はこのエラーを取得...コードネーム1とSQLiteエラー

java,lang,NullPointerException: Attempt to invoke virtual method 'void.com.codename1.db.Database.close()' on a null object reference 

私も持って前に私が試してみて、私は「クローズ」をやっているかどうかを確認するために私のコードをしてきましたDBインスタンスを作成しましたが、私はそれを見ることができません - もし私がこれをしていたら、それはシミュレータの権利で失敗すると思いますか?

dbPath = Display.getInstance().getDatabasePath("MyDB.db"); 
if(dbPath != null && !FileSystemStorage.getInstance().exists(dbPath)) { 
     copyDb(dbPath); 
    } 
} 

その後、あなたは:間違いがある

db = Display.getInstance().openOrCreate(dbPath); 

と私は

すべてのヘルプは

おかげで、あなたのコードで

+0

どのコードを使用してデータベースを開きますか?ログのパスが明らかに間違っています –

+0

この動作の仕組みがわかりません - ここにサンプルコードへのリンクがあります... https://docs.google.com/document/d/186Vuu1BRD-ItsWKtTx0Zjl6kB6TgCscv21_vYOd5aSQ/edit?usp =共有---それが間違っていても、エミュレータの権利ではうまくいかないでしょうか? –

+0

私はちょうど私のコードをデバッグしていると私は次の値を見ることができます:conn.url = jdbc:sqlite:/home/stevenmarkintegration/.cn1/database/MyDB.dbとconn.filename =/home/stevenmarkintegration /.cn1/database/MyDB.db ....これらのパスは私の電話には存在しませんでした。それが理由でしょうか?ありがとうShai。 –

答えて

1

あなたが感謝されますこれはシミュレータでうまく動作します。あなたは使用する必要があります。以下

db = Display.getInstance().openOrCreate("MyDB.db"); 

オリジナルの答え:

あなたがケーブルであなたのAndroidデバイスを接続し、DDMSに目を通す場合はあなたがあなたを指すことになり、エラーの完全なスタックトレースを見ることができるはずです失敗している特定のコード行に移動します。

このケースでは、DDMSまたはケーブルを必要とせずに、これもcrash protectionで正常に動作することに注意してください。

+0

残念ながら、DDMSをNetbeansで私のために働かせることはできませんでした。私はそれが私の理解の不足であると確信しています –

+0

あなたは下の編集リンクを使用して、あなたの元の質問を編集することができます。そのためのボタンがあります。私はあなたの文書を見て、問題の解決策を含めるように答えを変更しました。 –

0

私は、このYouTubeのチュートリアル以下「ADB」コマンドを使用して、問題の原因を見つけることができた:https://www.youtube.com/watch?v=3wMlCucwGvE

私はこれらの指示に従った場合、私はこの出力だから、次のように出力

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: Failed to open database '/databases/MyDB.db'. 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 1294): Could not open database 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: ################################################################# 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: Error Code : 1294 (SQLITE_CANTOPEN_ENOENT) 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: Caused By : Specified directory or database file does not exist. 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase: (unknown error (code 1294): Could not open database) 

10-27 08:14:12.580 3967 3986 E SQLiteDatabase:  ################################################################# 

を見ることができました - 私の元のエラーメッセージと一緒に、私はそれを開く前にDBをクローズしようとしていると私に伝えています。

は、これが私の心の中で二つの質問を提起:

1]それはエミュレータで完璧に動作Howcome?

2] DBを開いて閉じようとする前に、そのファイルが開かれていることを確認する必要がありますか?

関連する問題