从SQL信息插入图像

时间:2010-12-22 10:40:26

标签: android sqlite

'howard.jpg'在下面的sql语句中做了什么?&如何将图像插入我的Android应用程序?

CREATE TABLE IF NOT EXISTS employee ( 
    _id INTEGER PRIMARY KEY AUTOINCREMENT, 
    firstName VARCHAR(50), 
    lastName VARCHAR(50), 
    title VARCHAR(50), 
    department VARCHAR(50), 
    managerId INTEGER, 
    city VARCHAR(50), 
    officePhone VARCHAR(30), 
    cellPhone VARCHAR(30),  
    email VARCHAR(30), 
    picture VARCHAR(200)) 



    INSERT INTO employee VALUES(1,'Ryan','Howard','Vice President, North East', 
'Management', NULL, 'Scranton','570-999-8888','570-999-8887','ryan@dundermifflin.com','howard.jpg')

3 个答案:

答案 0 :(得分:0)

'howard.jpg'只是一个放入varchar列的字符串。您应该使用BLOB而不是varchar来表示jpg并且不是图片的名称,而是它的实际字节。 有关详细信息,请参阅here

答案 1 :(得分:0)

要在sqlite数据库中存储图像文件,您应该使用BLOB字段 由于你的sqlite限制,你应该以这种方式存储信息:

ContentValues cv = new ContentValues();
//your table fields goes here
...
// adding the bitmap in byte array way to the blob field
ByteArrayOutputStream out = new ByteArrayOutputStream();
friendInfo.getImage_bmp().compress(Bitmap.CompressFormat.PNG, 100,out);
cv.put("avatar_img", out.toByteArray());
db.insert(TABLE_NAME, null, cv);

要阅读它,你可以这样做:

byte[] blob = cur.getBlob(cur.getColumnIndex("avatar_img"));
Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0,blob.length, opts);
friend.setImage_bmp(bmp);

朋友是来自一个类的实例havind一个Bitmap属性callend Image_bmp;)

答案 2 :(得分:0)

我已经尝试了很多方法来完成这项工作,但直到我做了

cur.moveToFirst(); 

在查询之后,我在这里有空指针:

byte[] imageByteArray = cur.getBlob(cur.getColumnIndex("myImage"));