Android中SQlite資料庫存取Bitmap(一)

來源:互聯網
上載者:User

mainActivity如下:

package cn.com;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import cn.db.DBservice;import cn.db.Photo;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends Activity {    private Button mButton;    private Bitmap mBitmap;    private ImageView mImageView;    private boolean isDownload=true;    private boolean isSave=false;    private boolean isLoadFromDB=false;    private static final int DOWNLOAD_FINISH=88;    private byte[] photoByte;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        mButton=(Button) findViewById(R.id.button);        mButton.setOnClickListener(new ButtonOnClickListener());        mImageView=(ImageView) findViewById(R.id.imageView);    }      private class ButtonOnClickListener implements View.OnClickListener{public void onClick(View v) {if (isDownload) {new Thread(){public void run() {mBitmap=getBitmap("http://s12.sinaimg.cn/middle/4b181bd0gbf6cb07c2a1b&690");handler.sendEmptyMessage(DOWNLOAD_FINISH);}}.start();}if (isSave) {DBservice service=new DBservice(MainActivity.this);Photo photo=new Photo(1,mBitmap);service.save(photo,photoByte);isLoadFromDB=true;isSave=false;mButton.setText("從資料庫中載入bitmap");mImageView.setImageBitmap(null);return;}if (isLoadFromDB) {DBservice service=new DBservice(MainActivity.this);Photo photo=service.find(1);mImageView.setImageBitmap(photo.getPhoto());} }   }      Handler handler=new Handler(){   public void handleMessage(Message msg) {   switch (msg.what) {case DOWNLOAD_FINISH:mImageView.setImageBitmap(mBitmap);mButton.setText("儲存圖片至SQLite");isDownload=false;isSave=true;break;default:break;}   };   };   public Bitmap getBitmap(String imagePath) {try {URL imageUrl = new URL(imagePath);HttpURLConnection connection = (HttpURLConnection) imageUrl.openConnection();connection.setConnectTimeout(5000);connection.setRequestMethod("POST");if (connection.getResponseCode() == 200) {InputStream inputStream = connection.getInputStream();photoByte= readResource(inputStream);Bitmap bitmap=BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length);return bitmap;}} catch (Exception e) {}return null;};   public byte[] readResource(InputStream inputStream){   try {   ByteArrayOutputStream outputStream=new ByteArrayOutputStream();    byte [] buffer=new byte[1024];    int len=0;    while( (len=inputStream.read(buffer))!=-1){       outputStream.write(buffer,0,len);    }    inputStream.close();    outputStream.close();       return outputStream.toByteArray();} catch (Exception e) {}    return null;   }}

DataBaseOpenHelper.java如下:

package cn.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DataBaseOpenHelper extends SQLiteOpenHelper {public DataBaseOpenHelper(Context context) {super(context, "testbold.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table test(photoid integer primary key autoincrement,id ingeter(10),photo Blob(20))");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}}

 

DBservice.java如下:

package cn.db;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.Bitmap;import android.graphics.BitmapFactory;public class DBservice {private DataBaseOpenHelper openHelper;public DBservice(Context context) {openHelper=new DataBaseOpenHelper(context);}public void save(Photo photo,byte [] photoByte){SQLiteDatabase db=openHelper.getWritableDatabase();        db.execSQL("insert into test (id,photo) values(?,?)",new Object[]{photo.getId(),photoByte});        db.close();}public Photo find(int i){SQLiteDatabase db=openHelper.getWritableDatabase();Cursor cursor=db.rawQuery("select * from test where photoid=?", new String[]{String.valueOf(i)});while(cursor.moveToFirst()){int photoid=cursor.getInt(cursor.getColumnIndex("photoid"));byte[] photoByte=cursor.getBlob(cursor.getColumnIndex("photo"));          Bitmap bitmap=BitmapFactory.decodeByteArray(photoByte, 0, photoByte.length); Photo photo=new Photo(photoid, bitmap);return photo;}cursor.close();db.close();return null;}}

Photo.java如下:

package cn.db;import android.graphics.Bitmap;public class Photo {private int id;private Bitmap bitmap;public Photo() {}public Photo(int id, Bitmap bitmap) {super();this.id = id;this.bitmap = bitmap;}public int getId() {return id;}public void setId(int id) {this.id = id;}public Bitmap getPhoto() {return bitmap;}public void setPhoto(Bitmap bitmap) {this.bitmap = bitmap;}}

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.