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

复制代码 代码如下:
//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显示的就是之前保存到数据库中的图片
}

时间: 2024-09-20 13:49:54

android创建数据库(SQLite)保存图片示例的相关文章

android创建数据库(SQLite)保存图片示例_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,

关于android创建数据库后找不到数据表

问题描述 关于android创建数据库后找不到数据表 新手求教,用cmd运行splite>.table没反应,select * from xxx时显示no such table.找到数据库的文件导出后用记事本打开显示乱码..怎么办,求大神指点 解决方案 说明你只创建了数据库没有创建表吧:你可以将导出来的数据库文件用数据库打开看下里面有没有表 解决方案二: sdk中有一个叫 platform-tools 的文件夹里面的 sqlite3 可以用来查看导出的数据库文件 具体的操作是 打开sqlite3

SQLite 创建数据库(http://www.w3cschool.cc/sqlite/sqlite-create-database.html)

SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库.您不需要任何特殊的权限即可创建一个数据. 语法 sqlite3 命令的基本语法如下: $sqlite3 DatabaseName.db 通常情况下,数据库名称在 RDBMS 内应该是唯一的. 实例 如果您想创建一个新的数据库 <testDB.db>,SQLITE3 语句如下所示: $sqlite3 testDB.db SQLite version 3.7.15.2 2013-01-09 11:

Android创建和使用数据库SQLIte

一.关系型数据库SQLIte 每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的. SQLite体系结构图如下:

Android下创建一个sqlite数据库

在Android平台上,集成了一个嵌入式关系型数据库-SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型. SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么.SQLite可以解析大部分标准

Android创建和使用数据库

一.关系型数据库SQLIte         每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库-SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用,Mozilla FireFox就是使用SQLite来存储配置数据的,Android和iPhone都是使用SQLite来存储数据的. SQLite

Android编程之SQLite数据库操作方法详解

本文实例讲述了Android SQLite数据库操作方法.分享给大家供大家参考,具体如下: SQLite and Android SQLite简介 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型包括: 1.

Android中使用SQLite数据库

项目源码下载 https://github.com/Wang-Jun-Chao/AndroidProjects SQLite数据库 轻量级关系型数据库 创建数据库需要使用的api:SQLiteOpenHelper 必须定义一个构造方法: //arg1:数据库文件的名字 //arg2:游标工厂 //arg3:数据库版本 public MyOpenHelper(Context context, String name, CursorFactory factory, int version){} 数据

Android开发入门(十九)数据库 19.1创建数据库辅助类

目前所介绍的方法只是用来存储一些简单的数据.如果想要存储关系型数据,那么使用数据库将会更加的 效率.举个例子,你要存储学校里面每一个学生的分数,这种情况下,最好使用数据库,因为你可以查询某 个学生的具体分数.而且,使用数据库能够保持不同数据之间关系的完整性. Android使用SQLite数 据库系统.使用这种数据库,只有创建它的程序可以使用它,别的程序无法访问到它. 在接下来的几 节中,会简述如何通过编码在你的程序中创建一个SQLite数据库.对于Android来说,通过编码创建的数据库 的存