0
イメージをBLOBタイプとして保存しようとしています。 私はそれが正しいと確信していません。私がデバッグするとき、fetchAllItems()とfetchItem()は動作しません。 間違いはありますか?私はまったくそれを見つけることができません.. ブロブに問題が見つかりませんので、長いコーディングで申し訳ありません。 私を助けてください。ありがとう..ブロブとしてSqlite保存イメージ
ここにエラーメッセージがあります。 12月2日20:38:26.291:I /データベース(22251): SQLiteが返されました:エラーコード= 1、MSG =なし、このようなコラム:画像
public class FridgeDatabaseHelper extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "fridge_db";
private static final int DATABASE_VERSION = 1;
//Database creates through sql statement
private static final String DATBASE_CREATE = "create table fridge_table " +
"(_id integer primary key autoincrement, " +
"category text not null, name text not null, "+"" +
"expired_date text not null, image BLOB);";
public FridgeDatabaseHelper(Context ctxt)
{
//we can put database file name on 'DATABASE_NAME'
super(ctxt, DATABASE_NAME, null, DATABASE_VERSION);
}
//onCreate method
@Override
public void onCreate(SQLiteDatabase db)
{
//Method is called during creation of the database
db.execSQL(DATBASE_CREATE);
}
//Database fields
public static final String KEY_ROWID = "_id";
public static final String KEY_CATEGORY = "category";
public static final String KEY_NAME = "name";
public static final String KEY_EXPIRED_DATE = "expired_date";
public static final String KEY_IMAGE = "image";
private static final String DATABASE_TABLE = "fridge_table";
private Context ctxt;
private SQLiteDatabase db;
private FridgeDatabaseHelper dbhelper;
//SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public FridgeDbAdapter(Context ctxt)
{
this.ctxt = ctxt;
}
//Open database
public FridgeDbAdapter open() throws SQLException
{
dbhelper = new FridgeDatabaseHelper(ctxt);
db = dbhelper.getWritableDatabase();
return this;
}
//Close database
public void close(){
dbhelper.close();
}
//Create a new item
public long insertItem(String category, String name, String expired_date, byte[] image)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_CATEGORY, category);
initialValues.put(KEY_NAME, name);
initialValues.put(KEY_EXPIRED_DATE, expired_date);
initialValues.put(KEY_IMAGE, image);
return db.insert(DATABASE_TABLE, null, initialValues);
}
//return cursor over the list of all items in the database
public Cursor fetchAllItems(){
return db.query(DATABASE_TABLE, new String[]
{KEY_ROWID, KEY_CATEGORY, KEY_NAME, KEY_EXPIRED_DATE, KEY_IMAGE},
null, null, null, null, null);
}
//return a cursor positioned at the defined item
public Cursor fetchItem(long rowId) throws SQLException
{
Cursor mCursor = db.query(true, DATABASE_TABLE,
new String[]{KEY_ROWID, KEY_CATEGORY, KEY_NAME, KEY_EXPIRED_DATE, KEY_IMAGE},
KEY_ROWID + "=" + rowId, null, null, null, null, null);
//byte[] image = null;
if(mCursor != null){
mCursor.moveToFirst();
//image = mCursor.getBlob(mCursor.getColumnIndexOrThrow(KEY_IMAGE));
}
return mCursor;
}
ああ私はデータベースを更新して解決しました。ありがとう。しかし、私はイメージを保存し直した。カメラから画像を選択して保存すると、リストビューは2つの項目を1回だけでなく作成しました。最初の画像はまだ画像は表示されませんが、最後に選択した画像が2番目に表示されますが、画像はまったく変更できません。 – wholee1
データベースの更新で何を変更しましたか?イメージを変更できないと言ったら、データベースのレコードをどのように更新するのですか? – Chris
イメージが保存されることがありますが、時にはイメージが保存されないことがあります。私は本当に不思議です。コードを電子メールで伝えることはできますか?あなたは私のためにそれをチェックできますか?私はそれを本当に残念です。私は今まで強調している。できる場合は、あなたの電子メールを与えることができますか?ありがとう.. – wholee1