public class ImageDB extends SQLiteOpenHelper {/**数据库版本号**/private final static int DATABASE_VERSION = 1;/**数据库名**/private final static String DB_NAME = "image_db";/**表名**/private String TABLE_IMAGE = "image_data";public String T_ID = "_id";//字段名public String T_BLOB = "T_BLOB";//字段名/**创建表SQL 字符串**/private String TABLE_IMAGE_CREATE = "Create table " + TABLE_IMAGE + "(" + T_ID+ " INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT ,"+ T_BLOB + " BLOB );";/**表列数据集合**/private String[] col = { T_ID, T_BLOB };/**ImageDB对象构造方法**/public ImageDB(Context context) {super(context, DB_NAME, null, DATABASE_VERSION);}public ImageDB(Context context, String name, CursorFactory factory, int version) {super(context, name, factory, version);}/**创建数据**/public Long createData(Bitmap bmp) {ContentValues initValues = new ContentValues();Long id = null;ByteArrayOutputStream os = new ByteArrayOutputStream();/*** Bitmap.CompressFormat.JPEG 和 Bitmap.CompressFormat.PNG* JPEG 与 PNG 的是区别在于 JPEG是有损数据图像,PNG使用从LZ77派生的无损数据压缩算法。* 这里建议使用PNG格式保存* 100 表示的是质量为100%。当然,也可以改变成你所需要的百分比质量。* os 是定义的字节输出流* * .compress() 方法是将Bitmap压缩成指定格式和质量的输出流*/bmp.compress(Bitmap.CompressFormat.PNG, 100, os);initValues.put(T_BLOB, os.toByteArray());//以字节形式保存SQLiteDatabase db = getDatabaseWrit();id = db.insert(TABLE_IMAGE, null, initValues);//保存数据db.close();Log.i("Image ", "create done.");return id;}public List<Map<String, Object>> getData() {List<Map<String, Object>> list = null;SQLiteDatabase db = getDatabaseRead();Cursor cursor = db.query(TABLE_IMAGE, col, null, null, null, null, null);//数据的查询HashMap<String, Object> bindData = null;list = new ArrayList<Map<String, Object>>();for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {bindData = new HashMap<String, Object>();bindData.put(T_ID, cursor.getLong(0));/**得到Bitmap字节数据**/byte[] in = cursor.getBlob(1);/*** 根据Bitmap字节数据转换成 Bitmap对象* BitmapFactory.decodeByteArray() 方法对字节数据,从0到字节的长进行解码,生成Bitmap对像。**/Bitmap bmpout = BitmapFactory.decodeByteArray(in, 0, in.length);bindData.put(T_BLOB, bmpout);list.add(bindData);}cursor.close();db.close();Log.i("Image ", "get a Bitmap.");return list;}public void delete() {SQLiteDatabase db = getDatabaseWrit();db.delete(TABLE_IMAGE, null, null);//数据的删除db.close();Log.i("Image ", "delete all data.");}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL(TABLE_IMAGE_CREATE);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {String sql = " drop table " + TABLE_IMAGE;db.execSQL(sql);onCreate(db);}private SQLiteDatabase getDatabaseRead() {return this.getReadableDatabase();}private SQLiteDatabase getDatabaseWrit() {return this.getWritableDatabase();}}

点击打开链接

更多相关文章

  1. Android 官方数据库Room --- 配置
  2. 【Android】数据库 sqLite
  3. Android 使用广播(BroadcastReceiver)传递数据
  4. InputStream输入流,读取数据实例
  5. Android api 数据的保存方式
  6. 【Java转Android】30. LitePal操作SQLite数据库
  7. Android SQLite数据库相关操作
  8. android 自带的contacts2.db数据库表结构脚本
  9. android 两个apk之间恭喜数据SharedPreferences

随机推荐

  1. Android--设置软键盘的显示和隐藏
  2. Android中截图(surfaceView)
  3. Android系统篇之----Android中的run-as命
  4. 【转发】Android(安卓)Metro风格的Launch
  5. Android(安卓)Studio 模板用法与自定义模
  6. android构建自定义的视图组件onMeasure
  7. Android中资源文件(非代码部分)的使用概
  8. Android(安卓)播放网络视频,视频流的处理
  9. Android学习笔记(36):Android的两种事件
  10. 云时代下,设备的移动性到底对企业有什么影