Android现学现用第五天
作者:互联网
今天完成bitmap的存取~
这是昨天提到的博客里的方法:事实证明,存进去是没有问题的,我正在尝试再读出来。
1、bitmap保存到SQLite 中 数据格式:Blob
demo。
db.execSQL("Create table " + TABLE_NAME + "( _id INTEGER PRIMARY KEY AUTOINCREMENT,USER_AGE INTEGER,USER_NAME TEXT,BITMAP_VALUES BLOB );");
2、bitmap 变为 Blob
ContentValues values = new ContentValues();
final ByteArrayOutputStream os = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, os);
values.put(MyUser.User.BITMAP_VALUES, os.toByteArray());
values.put(MyUser.User.USER_NAME,"icon");
values.put(MyUser.User.USER_AGE,50);
getContentResolver().insert(MyUser.User.CONTENT_URI, values);
3、从SQLite中读取Bitmap
byte[] in=cur.getBlob(cur.getColumnIndex(MyUser.User.BITMAP_VALUES));
bmpout=BitmapFactory.decodeByteArray(in,0,in.length);
总结:
inputStream: 作为数据缓存,数据写如何供别的对象读取,其方法为read();
outputStream:作为数据缓存,将来向别的对象写内容!其方法write();
byte[] in=cur.getBlob(cur.getColumnIndex(MyUser.User.BITMAP_VALUES));//这样也可以对数据进行初始化,byte是基本类型,不需要之前进行长度定义。
关于cursor:
关于 Cursor
在你理解和使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:
Cursor 是每行的集合。
使用 moveToFirst() 定位第一行。
你必须知道每一列的名称。
你必须知道每一列的数据类型。
Cursor 是一个随机的数据源。
所有的数据都是通过下标取得。
关于 Cursor 的重要方法:
close()
关闭游标,释放资源
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
在缓冲区中检索请求的列的文本,将将其存储
getColumnCount()
返回所有列的总数
getColumnIndex(String columnName)
返回指定列的名称,如果不存在返回-1
getColumnIndexOrThrow(String columnName)
从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。
getColumnName(int columnIndex)
从给定的索引返回列名
getColumnNames()
返回一个字符串数组的列名
getCount()
返回Cursor 中的行数
moveToFirst()
移动光标到第一行
moveToLast()
移动光标到最后一行
moveToNext()
移动光标到下一行
moveToPosition(int position)
移动光标到一个绝对的位置
moveToPrevious()
移动光标到上一行
转载于:https://www.cnblogs.com/NateSheng/archive/2011/09/06/2167830.html
标签:第五天,cur,MyUser,Cursor,values,User,Android,现学现用,光标 来源: https://blog.csdn.net/weixin_30772105/article/details/97690672