2011-10-17 13 views
1

DBにバイト(バイト[])を格納しようとしています。私は、バイトの配列、コンテンツプロバイダとデータベースを持っています。 Blobに挿入しようとすると、挿入が-1を返します。誰かが私にこのことをやり遂げる方法を教えてもらえますか?AndroidのSQL Blob

挿入

byte[] inData = nw.receive(); 
ContentValues values = new ContentValues(); 
values.put(InDatabase.Columns.DATA, inData); 
values.put(InDatabase.Columns.SIZE, inData.length); 
NetService.this.getContentResolver().insert(InContentProvider.CONTENT_URI, values); 

コンテンツプロバイダ

mDB = mDBHelper.getWritableDatabase(); 
Long rowId = mDB.insert(mDBHelper.tableName(), null, aValues); 

データベース

 

@Override 
public void onCreate(SQLiteDatabase db) { 
     db.execSQL("CREATE table " + TABLE_NAME + "(id INTEGER PRIMARY KEY AUTOINCREMENT, data BLOB, size INTEGER);"); 
} 

Iドン場合は私が言ったようにvalues.put(InDatabase.Columns.DATA, inData)を置くと、完璧に動作します。

答えて

0

実装が正しいので、問題はSQLiteDatabaseHelperです。私はonUpdate()メソッドを実装していませんでした。私のデータベースはすでに異なるレイアウトのデバイス上に存在していたため(BLOBフィールドは存在しませんでした)、insertメソッドは失敗しました。

.apkをすばやくアンインストールすると問題が解決しました。また、データベースのバージョンが変更されたときに、テーブルのドロップまたは更新があるので、onUpdateメソッドを実装することもできます。

+0

もう一つは、あなたのヘルパーのonUpgrade()関数を自動的に呼び出すようにDbHelperコンストラクタに渡すデータベースのバージョンをインクリメントすることです。 DBテーブルを削除してそこから再度onCreate()を呼び出すと、自動的にすべてを再作成できます。開発を少し楽にするもう1つのオプションがあります。 –

関連する問題