2011-12-02 4 views
0

이미지를 BLOB 형식으로 저장하려고합니다. 나는 그것이 옳다는 것이 확실하지 않다. 디버깅 할 때 fetchAllItems() 및 fetchItem()이 작동하지 않습니다. 오류가 있습니까? 나는 그것을 전혀 발견 할 수 없다 .. 블로 브에 문제가 없기 때문에 오래 코딩하기 위해 죄송합니다. 도와주세요. 감사합니다 ...Sqlite 이미지를 blob로 저장

여기에 오류 메시지가 있습니다. 12-02 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

아 .. 데이터베이스를 업데이트하여 해결했습니다. 감사. 그러나, 나는 다시 이미지를 저장하는 붙어있어. 카메라에서 그림을 선택하여 저장하면 목록보기에서 두 번 항목을 한 번만 만들 수 없습니다. 첫 번째 사진은 여전히 ​​사진을 표시하지 않지만 두 번째 사진은 최종적으로 선택한 사진으로 표시되지만 이미지를 수정할 수는 없습니다 .. – wholee1

+0

데이터베이스를 업데이트 할 때 무엇을 변경해야합니까? 이미지를 수정할 수 없다고 말하면 데이터베이스의 레코드를 어떻게 업데이트합니까? – Chris

+0

때때로 이미지가 저장되지만 때로는 저장되지 않습니다. 나는 정말로 궁금해하고있다. 전자 메일로 코드를 제공 할 수 있습니까? 나 한테 확인해 줄래? 나는 그것을 정말로 유감스럽게 생각한다. 나는 지금까지 강조되고있다. 가능한 경우 이메일을 보내 주시겠습니까? 감사.. – wholee1

관련 문제