Android使用SQLiteDatabase直接存取数据与图像的简单方法如下:

package com.test;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import com.test.R;import android.app.Activity;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Bitmap.Config;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;public class SQLiteDatabaseTest extends Activity {/** Called when the activity is first created. */private Button btnSave;private Button btnLoad;private Button btnClear;private ImageView imgView;private ImageView imgView2;private TextView txtView;private Bitmap bmp;private static SQLiteDatabase db;private Context mContext;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btnSave = (Button) findViewById(R.id.btnSave);btnLoad = (Button) findViewById(R.id.btnLoad);btnClear = (Button) findViewById(R.id.btnClear);imgView = (ImageView) findViewById(R.id.imgView);imgView2 = (ImageView) findViewById(R.id.imgView2);txtView = (TextView) findViewById(R.id.txtView);btnSave.setOnClickListener(new ClickEvent());btnLoad.setOnClickListener(new ClickEvent());btnClear.setOnClickListener(new ClickEvent());imgView2.setImageBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.bg));mContext = SQLiteDatabaseTest.this;// 创建数据库文件File path = mContext.getDir("databases", Context.MODE_WORLD_WRITEABLE);path = new File(path, "test.db");int flag = SQLiteDatabase.OPEN_READWRITE;flag = flag | SQLiteDatabase.CREATE_IF_NECESSARY;flag = flag | SQLiteDatabase.NO_LOCALIZED_COLLATORS;                  db = SQLiteDatabase.openDatabase(path.getAbsolutePath(), null, flag);                  // 创建表String sql = "create table if not exists info("+ "id integer primary key autoincrement,name varchar(20),"+ "time varchar(20),img BLOB)";                 db.execSQL(sql);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();if (db.isOpen()) {      db.close();}if(!bmp.isRecycled()){     bmp.recycle();}}class ClickEvent implements View.OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (v == btnSave) {Cursor c = db.rawQuery("select * from info", null);ContentValues values = new ContentValues();c.moveToFirst();values.put("name", "test" + (c.getCount() + 1));SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String time = sDateFormat.format(new java.util.Date());values.put("time", time);    Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.bg);    if (null != bmp) {//在Bitmap上绘制标签Bitmap drawBmp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Config.ARGB_8888);Canvas cvs = new Canvas(drawBmp);Paint p = new Paint();p.setColor(Color.RED);p.setTextSize(22);cvs.drawBitmap(bmp, 0, 0, p);cvs.drawText("test" + (c.getCount() + 1), 10, 20,p);    //将绘制后Bitmap转为Byte[]并加入valuesvalues.put("img", bmpToByteArray(drawBmp));drawBmp.recycle();}db.insert("info", null, values);c.close();bmp.recycle();} else if (v == btnLoad) {Cursor c = db.rawQuery("select * from info", null);c.moveToLast();if (c.isLast()) {       String name = c.getString(c.getColumnIndex("name"));       txtView.setText("name:" + name + " 共计:" + c.getCount()+ " 条");       bmp = cursorToBmp(c, c.getColumnIndex("img"));       imgView.setImageBitmap(bmp);}c.close();} else if (v == btnClear) {imgView.setImageBitmap(null);}}}// 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 bitmapBitmap cursorToBmp(Cursor c, int columnIndex) {byte[] data = c.getBlob(columnIndex);try {return BitmapFactory.decodeByteArray(data, 0, data.length);} catch (Exception e) {return null;}}}

main.xml

<?xml version="1.0" encoding="utf-8"?>                                   

 

开发环境:XP3+Eclipse+Android2.2+JDK6.0
测试环境:Android2.2,5寸屏,分辨率640X480
源代码:http://download.csdn.net/detail/xinzheng_wang/4420817 



 

更多相关文章

  1. android获取系统环境变量
  2. Android 继承SQLiteOpenHelper自定义DBHelper存取数据与图像
  3. Windows 下 Android NDK 环境配置
  4. Android开发环境配置备忘录
  5. android windows下开发环境搭建
  6. Google android初级开发之 : android 编译环境安装(for Centos5.
  7. (20120722)(笔记002)android开发环境搭建
  8. android在window下的开发环境搭建
  9. android编程环境搭建

随机推荐

  1. s
  2. Android学习笔记35——ProgressBar进度控
  3. 01-android 4.0 入门配置以及HelloWorld
  4. Android Visible属性学习
  5. Android WIFI模块解析
  6. Android Studio 2.3 在小米手机中 调试安
  7. 获得Android设备的唯一序列号(一)
  8. android java 小型知识点
  9. Android之SharePreference
  10. Android之NDK初探