- 浏览: 138584 次
- 性别:
文章分类
最新评论
Android 继承SQLiteOpenHelper自定义DBHelper存取数据与图像如下:
package com.test; import java.io.ByteArrayOutputStream; import java.io.IOException; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.graphics.Bitmap; import android.graphics.BitmapFactory; public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "test.db"; private static final int DB_VERSION = 1; private static final String TABLE_NAME = "info"; private static final String CREATE_INFO = "create table if not exists info(" + "id integer primary key autoincrement,name varchar(20)," + "time varchar(20),img BLOB)"; private SQLiteDatabase db; DBHelper(Context c) { // super(c, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { this.db = db; db.execSQL(CREATE_INFO); } public void insert(ContentValues values, String tableName) { db = getWritableDatabase(); db.insert(tableName, null, values); db.close(); } // Return cursor with all columns by tableName public Cursor query(String tableName) { db = getWritableDatabase(); Cursor c = db.query(tableName, null, null, null, null, null, null); return c; } // Return cursor by SQL string public Cursor rawQuery(String sql, String[] args) { db = getWritableDatabase(); Cursor c = db.rawQuery(sql, args); return c; } // Execute a single SQL statement(as insert,create,delete)instead of a query public void execSQL(String sql) { db = getWritableDatabase(); db.execSQL(sql); } // Delete by id public void del(int id) { if (db == null) db = getWritableDatabase(); db.delete(TABLE_NAME, "id=?", new String[] { String.valueOf(id) }); } public void close() { if (db != null) db.close(); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } // Bitmap to byte[] public byte[] bmpToByteArray(Bitmap bmp) { // Default size is 32 bytes ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { bmp.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.close(); } catch (IOException e) { e.printStackTrace(); } return bos.toByteArray(); } // Cursor to bitmap Bitmap cursorToBmp(Cursor c, int columnIndex) { byte[] data = c.getBlob(columnIndex); try { return BitmapFactory.decodeByteArray(data, 0, data.length); } catch (Exception e) { return null; } } }
DBhelper调用方法:
//定义helper private static DBHelper helper; //创建helper helper = new DBHelper(this); //插入数据与图像 ContentValues values = new ContentValues(); values.put("name", "test"); values.put("img", helper.bmpToByteArray(bmp)); helper.insert(values, "info"); //访问数据与图像 Cursor c = helper.rawQuery("select * from info", null); c.moveToLast(); String name = c.getString(c.getColumnIndex("name")); Bitmap bmp = cursorToBmp(c, c.getColumnIndex("img"));
发表评论
-
Android onTouchEvent, onClick及onLongClick的调用机制
2012-03-08 15:44 893针对屏幕上的一个View控件,Android如何区分应当触发o ... -
android 常用颜色表
2012-03-09 16:01 920<?xml version="1.0" ... -
android ndk 环境搭建及基本编程思路
2012-03-28 16:09 885本文主要是介绍一下android ndk环境搭建及基本编程思路 ... -
windows下eclipse android-ndkr7b环境配置
2012-03-31 19:49 927注意:android-ndkr7b版本中已经集成了cyg ... -
配置 eclipse ndk 环境遇到的问题
2012-04-01 08:52 1054困惑了两天的环境配置问题,按照网上提供的方法去做总是错误 ... -
Android 配置 OpenCV2.3.1
2012-04-01 17:56 2053OpenCV2.3.1-android中大部分重要的AP ... -
Android中dip与px之间单位转换
2012-04-11 16:10 729/** * 根据手机的分辨率从dip 的单位转成为px(像素 ... -
Android 自定义像素AVD模拟器无键盘
2012-04-18 14:26 3397在Android自定义像素(如:800X480)时,AV ... -
在Android虚拟机AVD中安装APK
2012-04-18 15:13 2711为了方便测试,有时候会需要在自定义的Android虚拟机A ... -
Android SurfaceView onDraw()绘图问题
2012-06-29 11:32 10058在继承SurfaceView的类中即使重写了onDraw ... -
Android 自定义渐变背景
2012-07-04 08:36 1357在Eclipse的Android工程的res下建立dra ... -
Android 隐藏系统状态栏和标题栏
2012-07-04 09:06 1263Android中若想 隐藏系统状态栏和标题栏(全屏显示)的 ... -
Android双SurfaceView实现底部拍照,顶部绘图
2012-07-04 10:36 1542当SurfaceHolder对象的类型设置为Surf ... -
Android数据的四种存储方式之SharedPreferences、SQLite、ContentProvider和File
2012-07-06 15:32 2845Android系统一共提供了四种数据存储方式,分别 ... -
Android SQLite存取图像
2012-07-06 18:36 948Android SQLite存取图像的简单方法如下: ... -
Android使用SQLiteDatabase直接存取数据与图像
2012-07-10 15:15 1097Android使用SQLiteDatabase直接存取数 ... -
Android 系统菜单与自定义菜单
2012-07-25 16:28 2298Android 系统菜单与自 ...
相关推荐
在这个主题中,我们将深入探讨如何在Android环境下使用SQLiteDatabase来直接存取数据和图像。 首先,要使用SQLite数据库,我们需要创建一个SQLiteOpenHelper的子类。这个类有两个关键方法:`onCreate()` 和 `...
DbHelper,全称是SQLiteOpenHelper,是Android SDK提供的一种用于SQLite数据库的抽象类,它的主要职责是创建和升级数据库。DbHelper通过重写其中的两个关键方法来实现这些功能:`onCreate()`和`onUpgrade()`。 1. *...
首先,我们需要创建一个继承自`SQLiteOpenHelper`的自定义类,并重写其两个关键方法:`onCreate()`和`onUpgrade()`。 `onCreate()`方法在首次创建数据库时调用,用于执行数据库的创建语句,如创建表: ```java @...
通过继承SQLiteOpenHelper并实现其核心方法,开发者可以方便地在Android应用中存储和管理数据。在实际项目中,根据需求可以进一步扩展,比如添加事务处理、数据备份和恢复等功能,以满足更复杂的需求。
Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...
在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用的本地数据。SQLiteOpenHelper是Android SDK提供的一种工具类,它帮助开发者轻松管理SQLite数据库,包括创建、升级和打开数据库。在这个示例...
在"DBHelperExample"中,开发者可能创建了一个名为`DBHelper`的类,继承自`SQLiteOpenHelper`。这个自定义的类会包含以下关键功能: 1. **构造函数**:通常,构造函数会接收数据库的名称、版本号以及上下文(Context...
通过这个“android 数据库 以及自定义ContentProvider demo”,你应该能掌握如何在Android应用中使用SQLite数据库和自定义ContentProvider来实现数据的存储与共享。在实际项目中,这些技术对于构建复杂、数据驱动的...
在Android开发中,数据存取是一个重要的环节,因为应用程序需要持久化地存储用户数据、配置信息或任何其他必要的内容。本教程将深入讲解四种主要的数据存取方式:SharedPreferences、文件、SQLite数据库以及...
要创建自定义ContentProvider,首先需要创建一个新的Java类,继承自`android.content.ContentProvider`。在这个类中,需要重写以下几个关键方法: - `onCreate()`: 初始化方法,通常用于创建SQLite数据库或进行...
在android studio中存储数据有三个方法,分别是: (1)简单存储——SharedPreferences (2)文件存储: 内部存储——应用程序私有文件 外部存储——SD卡 资源文件——只读( RAW 、XML) (3)数据库存储——...
在Android开发中,SQLite是一个非常重要的数据存储工具,SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的辅助类。本文将深入探讨SQLiteOpenHelper的使用方法及其在实际应用中的关键知识点。 首先,...
在Android开发中,有时我们需要将应用的数据存储到特定的自定义文件夹中,而不是使用默认的SQLite数据库路径。这样的需求通常出现在我们希望更好地管理和组织数据,或者为了满足特定的备份和恢复策略。本文将深入...
在android中常用存储数据的基本就三种,sqlite,SharedPreferences,文件存储,其中针对于对象存储,使用sqlite比较多,因为可以对其进行增删改查。本文主要讲解SQLiteOpenHelper的封装使用,代码引用自...
本篇将详细阐述Android的数据存储操作,包括SharedPreferences、文件存储、SQLite数据库以及ContentProvider等存储方式,并结合实例代码展示如何实现自定义的ContentProvider。 首先,我们来了解Android数据存储的...
SQLiteOpenHelper重点在于helper,他是SQLiteDatabase的一个帮助类,便于开发者实现对SQLite的数据进行写入(增删改)和读取(查询)。 2. SQLiteOpenHelper具体有什么方法? 使用SQLiteOpenHelper,便是构建一个类...
在Android开发中,SQLite是一个轻量级的数据库引擎,它被集成到Android系统中,用于在本地存储数据。SQLiteOpenHelper是Android提供的一种管理SQLite数据库的工具类,它可以帮助我们创建、升级数据库以及创建表等...
在Android开发中,SQLite是一个轻量级的数据库引擎,它被集成到Android系统中,用于存储应用程序的数据。SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的工具类,它可以帮助我们完成数据库的创建、升级...
创建自定义的SQLiteOpenHelper子类,你需要继承SQLiteOpenHelper并重写上述两个方法。例如: ```java public class MyDatabaseHelper extends SQLiteOpenHelper { // 数据库版本号,每次数据库结构变化时,这个...