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
}
}
}
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
}
}
}
相关文章推荐
- android 向数据库写入图片信息 读取图片信息
- android 读取,写入图片到sd卡源码
- 往sqlite中写入图片二进制数据及读取源码 for iphone
- Android 操作数据库Sqlite,数据写入到SD卡里面
- 用sqlite存储Android手机图片,再从数据库读出图片显示。
- (二)上传图片至服务器,写入到数据库Blob字段中,以及从数据库读取Blob信息(iframe父子页面传值)
- ios sqlite中写入图片二进制数据及读取
- android创建数据库(SQLite)保存图片示例
- Android 数据库SQLite 写入SD卡的方法
- sqlite中写入图片二进制数据及读取源码 for iphone
- [笔记][收集]怎样用数据库sqlite3存储读取图片
- 往sqlite中写入和读取图片二进制数据的代码
- 图片以BLOB存储在后台数据库中,Android客户端要进行读取显示
- Android 保存图片到Sqlite 数据库并从数据库中获得图片
- 从数据库中读取图片文件和将图片和写入到数据库中
- 往sqlite中写入图片二进制数据及读取源码 for iphone
- sqlite中写入图片二进制数据及读取源码 for iphone
- Android入门——数据存储之SQLite存储读取图片
- android创建数据库(SQLite)保存图片示例ZZ 分类: Android数据存储 2015-03-22 09:58 41人阅读 评论(0) 收藏
- 往sqlite中写入图片二进制数据及读取源码 for iphone