我在SQLite数据库中为图像和类创建了一个表。 我正在为这张桌子做CRUD而且我已经陷入了获取Image的困境。有谁知道接下来该做什么?图像由相机拍摄。
public class Image
{
private int pid;
private byte[] photoByte;
public Image()
{
}
public Image(byte[] aPhoto)
{
this.photoByte = aPhoto;
}
public void set_id(int pid)
{
this.pid = pid;
}
public int getId()
{
return pid;
}
public void setPhoto(byte[] aPhoto)
{
this.photoByte = aPhoto;
}
public byte[] getPhoto()
{
return photoByte;
}
}
数据库的一部分:
String CREATE_PHOTO_TABLE = "CREATE TABLE IF NOT EXISTS " + PRODUCT_PHOTO + " (" + KEY_PID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ KEY_PHOTO + " BLOB" + ")";
db.execSQL(CREATE_PHOTO_TABLE);
public void savePhoto(byte[] image)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_PHOTO, image);
long newId = db.insert(PRODUCT_PHOTO, null, values);
}
public byte[] getPhoto()
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(PRODUCT_PHOTO, new String[]{KEY_PID})
???????
}
答案 0 :(得分:0)
我强烈建议您存储图像路径。但是如果你必须存储BLOB,那么你需要:
从光标获取bytes [],如此docs
中所述 byte[] value = cursor.getBlob(cursor.getColumnIndex(name));
根据需要使用byte [](写入文件,位图等)
答案 1 :(得分:0)
来吧,乔安娜想把照片存放在Db上,她请求帮助,不要因为她的解决方案而受到骂。
解决方案很简单,您只需要返回Blob字节[]
public byte[] getPhoto()
{
byte[] returnValue;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(PRODUCT_PHOTO, new String[]{KEY_PID});
if(cursor.MoveFirst()) {
returnValue = cursor.getBlob(0);
}
cursor.close();
db.close();
return returnValue;
}
我将图像存储在数据库中,我将它们存储在我的Android应用程序和MySQL数据库中(我通过web服务将byte []发送到MySQL数据库) 我的android应用程序图像数据库每天都被清除,所以就像临时存储一样,但在我的MySQL Db上,我有超过30k(并且还在增长)的图像记录,我没有任何问题保存或检索来自我的网络解决方案。