如何在按钮单击事件时将图像存储在sqlite数据库中

如何在按钮单击事件时将图像存储在sqlite数据库中

如何在按钮单击事件时将图像存储在sqlite数据库中?

最佳答案

package com.examples.aMySQL2;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteCursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


//Reading lines from a file
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.http.util.ByteArrayBuffer;


public class aMySQL2Activity extends Activity implements OnClickListener
{
    protected static TextView textView;
    protected static ImageView bmImage;
    protected Button start;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        bmImage = (ImageView)findViewById(R.id.imageView1);
        textView = (TextView) findViewById(R.id.textView1);

        start = (Button) findViewById(R.id.button1);
        start.setOnClickListener(this);

    DownloadFile();


    }
    // /data/data/<package_name>/databases  -путь к базе данных по умолчанию
    // "/data/data/com.examples.aMySQL2/databases/MyDB.db" //-путь к базе данных по умолчанию
    //  "/sdcard/Nick/MyDB.db"
    //  "/mnt/sdcard/Nick/MyDB.db"
    /// Android/data/<package_name>/files/
    public void onClick(View v)
    {
     SQLiteDatabase myDb;
     String MySQL;
     int icount;
     byte[] byteImage1 = null;
     byte[] byteImage2 = null;
       MySQL="create table emp1(_id INTEGER primary key autoincrement, fio TEXT not null, picture BLOB);";
       myDb = openOrCreateDatabase("/sdcard/Nick/MyWeatherDB.db", Context.MODE_PRIVATE, null);
  //     myDb.execSQL(MySQL);
  String s=myDb.getPath();
  textView.append("\r\n" + s+"\r\n");
       myDb.execSQL("delete from emp1");
       ContentValues newValues = new ContentValues();
    newValues.put("fio", "Иванов Петр Сергеевич");

 /////////// insert picture to blob field /////////////////////
    try
    {
    FileInputStream instream = new FileInputStream("/sdcard/Nick/weather.png");
    BufferedInputStream bif = new BufferedInputStream(instream);
    byteImage1 = new byte[bif.available()];
    bif.read(byteImage1);
textView.append("\r\n" + byteImage1.length+"\r\n");
    newValues.put("picture", byteImage1);

    long ret = myDb.insert("emp1", null, newValues);
    if(ret<0) textView.append("\r\n!!! Error add blob filed!!!\r\n");
    } catch (IOException e)
    {
        textView.append("\r\n!!! Error: " + e+"!!!\r\n");
    }

////////////Read data ////////////////////////////
Cursor cur = myDb.query("emp1",null, null, null, null, null, null);
    cur.moveToFirst();
    while (cur.isAfterLast() == false)
    {
        textView.append("\r\n" + cur.getString(1)+"\r\n");
        cur.moveToNext();
    }
///////Read data from blob field////////////////////
    cur.moveToFirst();
    byteImage2=cur.getBlob(cur.getColumnIndex("picture")); // ИМЕННО ТАК!!!
bmImage.setImageBitmap(BitmapFactory.decodeByteArray(byteImage2, 0, byteImage2.length));
    textView.append("\r\n" + byteImage2.length+"\r\n");
//////////////////////////
    cur.close();
    myDb.close();
  }

    public void DownloadFile()
    {
      Bitmap bitmap1 = null;
      bitmap1 = BitmapFactory.decodeFile("/sdcard/Nick/saranka.jpg"); //weather.png");
      bmImage.setImageBitmap(bitmap1);
    }


}

08-18 10:06