android创建数据库(SQLite)保存图片示例

 更新时间:2014年01月11日 15:42:19   作者:  
这篇文章主要介绍了android创建数据库,保存图片到数据库再从数据库取图片的方法,大家参考使用吧

复制代码 代码如下:

//1.创建数据库
public class DBService extends SQLiteOpenHelper {

private final static int VERSION = 1;
private final static String DATABASE_NAME = "uniteqlauncher.db";

public DBService(Context context) {
    this(context, DATABASE_NAME, null, VERSION);
}

public DBService(Context context, String name, CursorFactory factory,
        int version) {
    super(context, name, factory, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE [launcher]("
        + "[_id] INTEGER PRIMARY KEY AUTOINCREMENT,"
        + "[photo] BINARY)"; //保存为binary格式

    db.execSQL(sql);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if(newVersion > oldVersion){
        db.execSQL("DROP TABLE IF EXISTS[launcher]");
    } else {
        return;
    }
    onCreate(db);
}
}
//保存图片到数据库
public void savePhoto(Drawable appIcon, Context mContext){
LayoutInflater mInflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.app_view, null);
ImageView iv = (ImageView) v.findViewById(R.id.appicon);
iv.setImageDrawable(appIcon);
String INSERT_SQL = "INSERT INTO launcher(photo) values(?)";
SQLiteDatabase db = mDBService.getWritableDatabase(); // 得到数据库
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
((BitmapDrawable) iv.getDrawable()).getBitmap().compress(
CompressFormat.PNG, 100, baos);//压缩为PNG格式,100表示跟原图大小一样
Object[] args = new Object[] {baos.toByteArray() };
db.execSQL(INSERT_SQL, args);
baos.close();
db.close();
} catch (Exception e) {
e.printStackTrace();
}

}

//3.从数据库中取图片
public void getPhoto() {
String SELECT_SQL = "SELECT photo FROM launcher";
ImageView appIcon = (ImageView) v.findViewById(R.id.appicon);//v是我在类中定义的一个view对象,跟前面保存图片一样
byte[] photo = null;
mDBService = new DBService(getContext());
SQLiteDatabase db = mDBService.getReadableDatabase();
Cursor mCursor = db.rawQuery(SELECT_SQL, null);
if (mCursor != null) {
if (mCursor.moveToFirst()) {//just need to query one time
photo = mCursor.getBlob(mCursor.getColumnIndex("photo"));//取出图片
}
}
if (mCursor != null) {
mCursor.close();
}
db.close();
    ByteArrayInputStream bais = null;
if (photo != null) {
        bais = new ByteArrayInputStream(photo);
        appIcon.setImageDrawable(Drawable.createFromStream(bais, "photo"));//把图片设置到ImageView对象中
}
    //appIcon显示的就是之前保存到数据库中的图片
}

相关文章

  • Android 连接Wifi和创建Wifi热点的实例

    Android 连接Wifi和创建Wifi热点的实例

    本篇文章介绍了Android 连接Wifi和创建Wifi热点,小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2016-10-10
  • Android控件FlowLikeView实现点赞动画

    Android控件FlowLikeView实现点赞动画

    这篇文章主要为大家详细介绍了一个点赞动画的优雅控件FlowLikeView,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android Studio中CodeStyle模板的配置方式

    Android Studio中CodeStyle模板的配置方式

    这篇文章主要介绍了Android Studio中CodeStyle模板的配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android内存泄漏导致原因深入探究

    Android内存泄漏导致原因深入探究

    内存管理的目的就是让我们在开发过程中有效避免我们的应用程序出现内存泄露的问题。内存泄露相信大家都不陌生,我们可以这样理解:没有用的对象无法回收的现象就是内存泄露
    2023-02-02
  • Android软键盘弹出时的界面控制方法

    Android软键盘弹出时的界面控制方法

    这篇文章主要介绍了Android软键盘弹出时的界面控制方法,结合实例形式分析了Android软键盘弹出后的三种模式,涉及Android针对AndroidManifet.xml的修改技巧,需要的朋友可以参考下
    2016-08-08
  • Android原生绘图工具Canvas详细

    Android原生绘图工具Canvas详细

    上一篇文章给大家介绍了Android原生绘图工具Paint,然而android中提供了类似的工具Canvas和Paint,分别对应画布和画笔,所以今天的这篇文章就来介绍Androi原生绘图的另一个工具Canvas,感兴趣的小伙伴一起来学习下面文章内容
    2021-09-09
  • Android自定义Toolbar使用方法详解

    Android自定义Toolbar使用方法详解

    这篇文章主要为大家详细介绍了Android自定义Toolbar使用方法 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android微信图片浏览框架设计

    Android微信图片浏览框架设计

    这篇文章主要为大家详细介绍了Android微信图片浏览框架设计,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android性能图论在启动优化中的应用示例详解

    Android性能图论在启动优化中的应用示例详解

    这篇文章主要为大家介绍了Android性能图论在启动优化中的应用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 基于Socket.IO实现Android聊天功能代码示例

    基于Socket.IO实现Android聊天功能代码示例

    本篇文章主要介绍了基于Socket.IO实现Android聊天功能代码示例,具有一定的参考价值,有兴趣的可以了解一下
    2017-08-08

最新评论