您的位置:首页 > 移动开发 > Android开发

android写入数据库、读取sqlite中的图片

2012-04-01 13:30 399 查看
import java.io.ByteArrayOutputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import android.app.Activity;

import android.content.Context;

import android.content.res.AssetManager;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.graphics.drawable.Drawable;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

public class AndroidTestActivity extends Activity {

/** Called when the activity is first created. */

private Button btn;

private SQLiteDatabase db = null;

private ImageView imageView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/**

* getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。

* 但getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,

* 倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,

* 如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。

*/

DBHelper helper = new DBHelper(AndroidTestActivity.this, "mysql1.txt");

db = helper.getWritableDatabase();

imageView=(ImageView)findViewById(R.id.imgView);

btn=(Button)findViewById(R.id.button1);

btn.setOnClickListener(

new Button.OnClickListener()

{

public void onClick(View v)

{

String fileName="mysql.db";

AssetManager assets = getAssets();

try {

InputStream is=assets.open(fileName);

Log.v("is.length", is.available()+"");

FileOutputStream fos=new FileOutputStream(Environment.getDataDirectory()+ "/data/com.xujie.test/databases/" + "mysql1.txt");

byte[]bytes=getInput(is);

// int b=0;

// while((b=is.read())!=-1)

// {

// fos.write(b);

// }

fos.write(bytes);

/**

* 将数据流关闭

*/

fos.flush();

fos.close();

is.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

Cursor cursor= get_equipment_by_id("3");

while(cursor.moveToNext())

{

Bitmap bitmap=getIconFromCursor(cursor, cursor.getColumnIndex("icon"));

Drawable drawable=new BitmapDrawable(bitmap);

imageView.setImageDrawable(drawable);

}

}

}

);

}

public Bitmap getIconFromCursor(Cursor c, int iconIndex) {

byte[] data = c.getBlob(iconIndex);

try {

Log.v("BitmapFactory.decodeByteArray.length000:", "BitmapFactory.decodeByteArray.length");

Log.v("BitmapFactory.decodeByteArray.length:", BitmapFactory.decodeByteArray(data, 0, data.length).getWidth()+"");

Log.v("BitmapFactory.decodeByteArray.length111:", "BitmapFactory.decodeByteArray.length");

return BitmapFactory.decodeByteArray(data, 0, data.length);

} catch (Exception e) {

return null;

}

}

public byte[] getInput(InputStream is) throws IOException

{

ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] b = new byte[1024];

int len = 0;

while ((len = is.read(b, 0, 1024)) != -1)

{

baos.write(b, 0, len);

baos.flush();

}

return baos.toByteArray();

}

/**

* @name get_equipment_by_id

* @desc 设备列表

* @author liwang

* @date 2011-12-28

* @param String type 设备类型

* @return Cursor

*/

public Cursor get_equipment_by_id(String id)

{

return db.query("equipments", null, "id=?", new String[]{id} ,null, null, null);

}

class DBHelper extends SQLiteOpenHelper

{

public DBHelper(Context context, String name, CursorFactory factory, int version)

{

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

public DBHelper(Context context, String name)

{

super(context, name, null, 1);

}

@Override

public void onCreate(SQLiteDatabase db)

{

// TODO Auto-generated method stub

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

// TODO Auto-generated method stub

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: