我有一个关于将对象插入SQLite数据库的问题。我的班级Case
看起来像这样:
public class Case {
String caseNumber;
int status;
String date;
Bitmap rightIndexFinger;
Bitmap leftIndexFinger;
public Case(String caseNumber, int status, String date, Bitmap rightIndexFinger, Bitmap leftIndexFinger) {
this.caseNumber = caseNumber;
this.status = status;
this.date = date;
this.rightIndexFinger = rightIndexFinger;
this.leftIndexFinger = leftIndexFinger;
}
public Case(String caseNumber, int status, String date) {
this.caseNumber = caseNumber;
this.status = status;
this.date = date;
}
public Bitmap getRightIndexFinger() {
return rightIndexFinger;
}
public void setRightIndexFinger(Bitmap rightIndexFinger) {
this.rightIndexFinger = rightIndexFinger;
}
public Bitmap getLeftIndexFinger() {
return leftIndexFinger;
}
public void setLeftIndexFinger(Bitmap leftIndexFinger) {
this.leftIndexFinger = leftIndexFinger;
}
public String getCaseNumber() {
return caseNumber;
}
public void setCaseNumber(String caseNumber) {
this.caseNumber = caseNumber;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getDate() {
return date.toString();
}
public void setDate(String date) {
this.date = date;
}
}
我需要将此类的对象插入到SQLite数据库中。我试过的是:
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CASES + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + DATE + " TEXT,"
+ RIGHTFINGER + " TEXT," + LEFTFINGER +" TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
如果我case
类中的所有变量都是String
,这是有道理的,但我怎样才能为Bitmaps做这个?
答案 0 :(得分:1)
sqlite中的位图映射到Blob,插入一个图像,将其插入为byte [] ..
检查https://stackoverflow.com/a/4508531/1434631
并https://stackoverflow.com/a/7331698/1434631
答案 1 :(得分:1)
将位图转换为字节数组,然后将此字节数组以Blob数据类型保存到数据库中。通过以下代码:
要将位图转换为字节数组,请使用以下代码:
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.thumbnail);
ByteArrayOutputStream out = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.PNG, 100, out);
byte[] buffer=out.toByteArray();
要以blob类型保存字节数组,请使用以下代码:
ContentValues cv=new ContentValues();
cv.put(CHUNK, buffer); //CHUNK blob type field of your table
long rawId=database.insert(TABLE, null, cv); //TABLE table name
通过此链接了解有关Blob的更多信息