2011-12-02 19 views
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; 
} 

答えて

0

ない、これはそれを解決するが、しようとする場合には、正確に確認してくださいcreate文でBLOBをBLOB(大文字から小文字)に変更します。

+0

ああ私はデータベースを更新して解決しました。ありがとう。しかし、私はイメージを保存し直した。カメラから画像を選択して保存すると、リストビューは2つの項目を1回だけでなく作成しました。最初の画像はまだ画像は表示されませんが、最後に選択した画像が2番目に表示されますが、画像はまったく変更できません。 – wholee1

+0

データベースの更新で何を変更しましたか?イメージを変更できないと言ったら、データベースのレコードをどのように更新するのですか? – Chris

+0

イメージが保存されることがありますが、時にはイメージが保存されないことがあります。私は本当に不思議です。コードを電子メールで伝えることはできますか?あなたは私のためにそれをチェックできますか?私はそれを本当に残念です。私は今まで強調している。できる場合は、あなたの電子メールを与えることができますか?ありがとう.. – wholee1

関連する問題