2017-07-06 24 views
0

を更新するとき、私はそれは、次の手順で削除された後に、行を更新することにより、いくつかの例外処理をテストするために、エラー状態を強制しようとしていませんエラー:しかし、そこのSQLite - 削除された行

1. Load record into GUI 
2. Pull .db3 file to Windows 
3. Delete record with sqlite3 
4. Push .db3 file back to Android 
3. Save record from GUI 

ExecuteNonQuery()から例外がスローされず、logcatに何もありません。

なぜ、ステップ3の場合、レコードを削除するときにDBファイルの名前が変更され、例外がスローされますか?


更新:この同じ動作でsqlite3結果とデバイスから直接レコードを削除します。

注: Samsung Galaxy Tab2には、PIE(Position Independent Execution)バージョンが必要です。

+2

ジャーナルファイルの読み込み/書き込みが行われている可能性があります。手順2〜4の代わりに、レコードを削除して保存を試みるためのコードを追加します。詳しい読書については、https://stackoverflow.com/questions/26209091/what-is-the-journal-sqlite-database-in-androidを参照してください。 – petey

答えて

0

sql3データプロバイダについて完全にはわかりません。ただし、削除の問合せではなく問合せ関数を使用することをお薦めします。クエリの削除の影響を受ける行を取得します。そして、行が返されない場合には、シナリオに対してthrowと例外広告が必要です。

+0

'ExecuteNonQuery()'は 'delete'文が' sqlite3'コマンドラインインタフェースから実行された後に 'Mono.Data.Sqlite'プロバイダから呼び出されます。 – samosaris

1

行を更新しても、SQLではエラー/例外がスローされません。 データベース更新クエリで行が見つからない場合は、何もせず、エラー/例外メッセージも表示されません。

+0

これをテストします。私は、テストを行うときにコードを追加するのではなく、変更する必要があるためです。私は可能な限り* "現実の" *シナリオを導入することを好むが、これについては** petey **に試行を提案する(DBファイルの名前を変更すると、関連するtry/catchのテストに十分な例外が与えられた私はさらに進んでいないが、今この行動を観察することに興味がある)。 – samosaris

1

更新クエリでエラーが発生しません。

関連する問題