`

Android 继承SQLiteOpenHelper自定义DBHelper存取数据与图像

 
阅读更多

 

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使用SQLiteDatabase直接存取数据与图像

    在这个主题中,我们将深入探讨如何在Android环境下使用SQLiteDatabase来直接存取数据和图像。 首先,要使用SQLite数据库,我们需要创建一个SQLiteOpenHelper的子类。这个类有两个关键方法:`onCreate()` 和 `...

    android数据存储之DbHelper

    DbHelper,全称是SQLiteOpenHelper,是Android SDK提供的一种用于SQLite数据库的抽象类,它的主要职责是创建和升级数据库。DbHelper通过重写其中的两个关键方法来实现这些功能:`onCreate()`和`onUpgrade()`。 1. *...

    Android SqliteOpenHelper数据库的基本使用

    首先,我们需要创建一个继承自`SQLiteOpenHelper`的自定义类,并重写其两个关键方法:`onCreate()`和`onUpgrade()`。 `onCreate()`方法在首次创建数据库时调用,用于执行数据库的创建语句,如创建表: ```java @...

    android SQLiteOpenHelper 数据库简单应用

    通过继承SQLiteOpenHelper并实现其核心方法,开发者可以方便地在Android应用中存储和管理数据。在实际项目中,根据需求可以进一步扩展,比如添加事务处理、数据备份和恢复等功能,以满足更复杂的需求。

    Android实现使用自定义ContentProvider共享生词本数据库

    Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...

    android app 示例 SQLiteOpenHelper 实现数据操作

    在Android应用开发中,SQLite是一个轻量级的关系型数据库,常用于存储应用的本地数据。SQLiteOpenHelper是Android SDK提供的一种工具类,它帮助开发者轻松管理SQLite数据库,包括创建、升级和打开数据库。在这个示例...

    DBHelperExample:这是一个扩展 SQLiteOpenHelper 的 DBHelper 示例

    在"DBHelperExample"中,开发者可能创建了一个名为`DBHelper`的类,继承自`SQLiteOpenHelper`。这个自定义的类会包含以下关键功能: 1. **构造函数**:通常,构造函数会接收数据库的名称、版本号以及上下文(Context...

    android 数据库 以及自定义ContentProvider demo

    通过这个“android 数据库 以及自定义ContentProvider demo”,你应该能掌握如何在Android应用中使用SQLite数据库和自定义ContentProvider来实现数据的存储与共享。在实际项目中,这些技术对于构建复杂、数据驱动的...

    Android教程05-数据存取.ppt

    在Android开发中,数据存取是一个重要的环节,因为应用程序需要持久化地存储用户数据、配置信息或任何其他必要的内容。本教程将深入讲解四种主要的数据存取方式:SharedPreferences、文件、SQLite数据库以及...

    Android 之 自定义ContentProvider的使用

    要创建自定义ContentProvider,首先需要创建一个新的Java类,继承自`android.content.ContentProvider`。在这个类中,需要重写以下几个关键方法: - `onCreate()`: 初始化方法,通常用于创建SQLite数据库或进行...

    在android studio中用SQLiteOpenHelper()方法建立数据库

    在android studio中存储数据有三个方法,分别是: (1)简单存储——SharedPreferences (2)文件存储: 内部存储——应用程序私有文件 外部存储——SD卡 资源文件——只读( RAW 、XML) (3)数据库存储——...

    android SQLiteOpenHelper使用示例

    在Android开发中,SQLite是一个非常重要的数据存储工具,SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的辅助类。本文将深入探讨SQLiteOpenHelper的使用方法及其在实际应用中的关键知识点。 首先,...

    自定义文件夹 创建数据

    在Android开发中,有时我们需要将应用的数据存储到特定的自定义文件夹中,而不是使用默认的SQLite数据库路径。这样的需求通常出现在我们希望更好地管理和组织数据,或者为了满足特定的备份和恢复策略。本文将深入...

    android 中 SQLiteOpenHelper的封装使用详解

    在android中常用存储数据的基本就三种,sqlite,SharedPreferences,文件存储,其中针对于对象存储,使用sqlite比较多,因为可以对其进行增删改查。本文主要讲解SQLiteOpenHelper的封装使用,代码引用自...

    android开发入门与实战(下)

    本篇将详细阐述Android的数据存储操作,包括SharedPreferences、文件存储、SQLite数据库以及ContentProvider等存储方式,并结合实例代码展示如何实现自定义的ContentProvider。 首先,我们来了解Android数据存储的...

    【android】SQLiteOpenHelper实现数据库的增删改查(封装的思想,一个小框架)

    SQLiteOpenHelper重点在于helper,他是SQLiteDatabase的一个帮助类,便于开发者实现对SQLite的数据进行写入(增删改)和读取(查询)。 2. SQLiteOpenHelper具体有什么方法? 使用SQLiteOpenHelper,便是构建一个类...

    android的SQLiteOpenHelper类的应用实例.docx

    在Android开发中,SQLite是一个轻量级的数据库引擎,它被集成到Android系统中,用于在本地存储数据。SQLiteOpenHelper是Android提供的一种管理SQLite数据库的工具类,它可以帮助我们创建、升级数据库以及创建表等...

    Android 数据库 SQlite 范例 SQLiteOpenHelper

    在Android开发中,SQLite是一个轻量级的数据库引擎,它被集成到Android系统中,用于存储应用程序的数据。SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的工具类,它可以帮助我们完成数据库的创建、升级...

    android 手机数据库 实现SQLiteOpenHelper

    创建自定义的SQLiteOpenHelper子类,你需要继承SQLiteOpenHelper并重写上述两个方法。例如: ```java public class MyDatabaseHelper extends SQLiteOpenHelper { // 数据库版本号,每次数据库结构变化时,这个...

Global site tag (gtag.js) - Google Analytics