2016-03-24 46 views
0

我嘗試在ImageView中顯示圖像。類型是BLOB到SQLite數據庫,但我發現在android工作室錯誤是錯誤:(43,220)錯誤:不兼容的類型:字節[]不能轉換爲int。錯誤:不兼容的類型:byte []不能轉換爲int。在圖像

這是我在數據庫類代碼

public class Database { 
public static final String DATABASE_NAME = "dic.sqlite"; 
public static final String TABLE_FIRST = "en1_word"; 
public static final String TABLE_SECOND = "en2_word"; 
public static final String COLUMN_ID = "id"; 
public static final String COLUMN_WORD = "word"; 
public static final String COLUMN_MEAN = "mean"; 
public static final String COLUMN_CATEGORY = "category"; 
public static final String COLUMN_PIC = "pic"; 
public static final String COLUMN_FAVORITE = "favorite";} 

和databasedao類

public class DictionaryDaoImpl implements DictionaryDao { 
private SQLiteDatabase sqLiteDatabase; 
public DictionaryDaoImpl(SQLiteDatabase sqLiteDatabase){ 
    this.sqLiteDatabase = sqLiteDatabase; 

} 
@Override 
public Word getWordById(int id) { 
    Cursor cursor = sqLiteDatabase.query(Util.getCurrentTableName(),new String[]{Database.COLUMN_ID, Database.COLUMN_WORD, Database.COLUMN_MEAN, Database.COLUMN_FAVORITE,Database.COLUMN_CATEGORY ,Database.COLUMN_PIC}, 
      Database.COLUMN_ID + " = ?",new String[]{String.valueOf(id)},null,null,null,null); 

    int idColumnIndex = cursor.getColumnIndex(Database.COLUMN_ID); 
    int wordColumnIndex = cursor.getColumnIndex(Database.COLUMN_WORD); 
    int meanColumnIndex = cursor.getColumnIndex(Database.COLUMN_MEAN); 
    int favoriteColumnIndex = cursor.getColumnIndex(Database.COLUMN_FAVORITE); 
    int categoryColumnIndex = cursor.getColumnIndex(Database.COLUMN_CATEGORY); 
    byte[] picColumnIndex = cursor.getBlob(cursor.getColumnIndex(Database.COLUMN_PIC)); 

    Word word = null; 
    if (cursor.moveToNext()){ 
     word = new Word(cursor.getInt(idColumnIndex),cursor.getString(wordColumnIndex), cursor.getString(meanColumnIndex), cursor.getInt(favoriteColumnIndex)==1,cursor.getString(categoryColumnIndex), cursor.getBlob(picColumnIndex)); 
    } 
    return word; 
} 

和詞類

public class Word { 
private int id; 
private String word; 
private String mean; 
boolean isFavorite; 
private byte[] pic; 
private String category; 

public Word(int id, String word, String mean, boolean isFavorite, byte[] pic, String category) { 
    this.id = id; 
    this.word = word; 
    this.mean = mean; 
    this.isFavorite = isFavorite; 
    this.pic = pic; 
    this.category = category; 
} 
public int getId() { 
    return id; 
} 
public void setId(int id) { 
    this.id = id; 
} 
public String getWord() { 
    return word; 
} 
public void setWord(String word) { 
    this.word = word; 
} 
public String getMean() { 
    return mean; 
} 
public void setMean(String mean) { 
    this.mean = mean; 
} 
public boolean isFavorite() { 
    return isFavorite; 
} 
public void setIsFavorite(boolean isFavorite) { 
    this.isFavorite = isFavorite; 
} 
public String getCategory() { 
    return category; 
} 
public void setCategory(String category) { 
    this.category = category; 
} 
public byte[] getPic() { 
    return pic; 
} 
public void setPic(byte[] pic) { 
    this.pic = pic; 
} 
+0

在什麼地方拋出異常? –

回答

0

在這種cursor.getBlob(picColumnIndex)picColumnIndex應該int型的,而你已將其定義爲byte[] picColumnIndex

而不是byte[] picColumnIndex = cursor.getBlob(cursor.getColumnIndex(Database.COLUMN_PIC));我相信你想int picColumnIndex = cursor.getColumnIndex(Database.COLUMN_PIC);

+0

我正要說 – leonziyo

+0

好。我迷惑。我能行。比你。 – user3268375

相關問題