title: how to browse image and save in sqllite database
body: <p>this is my  source code is not upload image from gellery and save in sql lite please help me what i did wrong? i read this sample code <a href="http://androidhub4you.blogspot.com/2012/09/hello-friends-today-i-am-going-to-share.html" rel="nofollow">http://androidhub4you.blogspot.com/2012/09/hello-friends-today-i-am-going-to-share.html</a> is take hard code image i add browse button in this code to take image from own choice and display</p>
  
  <pre><code> import android.app.Activity;
  import android.content.Intent;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.net.Uri;
   import android.os.Bundle;
  import android.util.Log;
   import android.view.View;
   import android.widget.Button;
   import android.widget.ListView;
  
   public class SQLiteDemoActivity extends Activity {
  
  
  final int SELECT_PHOTO = 0;
   ArrayList&lt;Contact&gt; imageArry = new ArrayList&lt;Contact&gt;();
   ContactImageAdapter adapter;
   Button BrowseButton;
    DataBaseHandler db;
  
  /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
  
    db = new DataBaseHandler(this);
   //get image from drawable
    //Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.facebook);
  
  
   BrowseButton=(Button)findViewById(R.id.BrowseButton);
  
  
  
    BrowseButton.setOnClickListener(new View.OnClickListener() {
  
     @Override
     public void onClick(View v) {
      // TODO Auto-generated method stub
       // in onCreate or any event where your want the user to
      // select a file
      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
      photoPickerIntent.setType("image/*");
  
      startActivityForResult(photoPickerIntent, SELECT_PHOTO);
  
  
   }
  });
  
  
  
   }
  
   @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent        
   imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
  
     switch(requestCode) {
   case SELECT_PHOTO:
    if(resultCode == RESULT_OK){
  Uri selectedImage = imageReturnedIntent.getData();
  
  InputStream imageStream = null;
  try {
      imageStream = getContentResolver().openInputStream(
              selectedImage);
  } catch (FileNotFoundException e) {
      e.printStackTrace();
  }
  
  Bitmap bmp = BitmapFactory.decodeStream(imageStream);
  
  
  ByteArrayOutputStream stream = new ByteArrayOutputStream();
  bmp.compress(Bitmap.CompressFormat.JPEG, 100, stream);
  byte[] imageInByte = stream.toByteArray();
  
  Log.d("Insert: ", "Inserting ..");
  db.addContact(new Contact("FaceBook", imageInByte));
  //display main List view bcard and contact name
  
  //Reading all contacts from database
  List&lt;Contact&gt; contacts = db.getAllContacts();
  for (Contact cn : contacts) {
  String log = "ID:" + cn.getID() + " Name: " + cn.getName()
  + " ,Image: " + cn.getImage();
  
  //Writing Contacts to log
  Log.d("Result: ", log);
  //add contacts data in arrayList
  imageArry.add(cn);
  
  }
  adapter = new ContactImageAdapter(this, R.layout.screen_list,
  imageArry);
  ListView dataList = (ListView) findViewById(R.id.list);
  dataList.setAdapter(adapter);
  
  try {
      stream.close();
      stream = null;
  } catch (IOException e) {
  
      e.printStackTrace();
  }
  
  
  
   //convert bitmap to byte
  
  
  }
  }
   }
    }
  
  
  
  
  
  
  
  
  
        private static final int DATABASE_VERSION = 1;
  
      //Database Name
     private static final String DATABASE_NAME = "imagedb";
  
     //Contacts table name
   private static final String TABLE_CONTACTS = "contacts";
  
   //Contacts Table Columns names
   private static final String KEY_ID = "id";
   private static final String KEY_NAME = "name";
  private static final String KEY_IMAGE = "image";
  
    public DataBaseHandler(Context context) {
   super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
  
   //Creating Tables
    @Override
   public void onCreate(SQLiteDatabase db) {
   String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
   + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
    + KEY_IMAGE + " BLOB" + ")";
  db.execSQL(CREATE_CONTACTS_TABLE);
      }
  
     //Upgrading database
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     //Drop older table if existed
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
  
       //Create tables again
      onCreate(db);
       }
  
     /**
    * All CRUD(Create, Read, Update, Delete) Operations
      */
  
        public// Adding new contact
     void addContact(Contact contact) {
       SQLiteDatabase db = this.getWritableDatabase();
  
       ContentValues values = new ContentValues();
     values.put(KEY_NAME, contact._name); // Contact Name
      values.put(KEY_IMAGE, contact._image); // Contact Phone
  
       //Inserting Row
      db.insert(TABLE_CONTACTS, null, values);
        db.close(); // Closing database connection
        }
  
       //Getting single contact
      Contact getContact(int id) {
     SQLiteDatabase db = this.getReadableDatabase();
  
    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
     KEY_NAME, KEY_IMAGE }, KEY_ID + "=?",
      new String[] { String.valueOf(id) }, null, null, null, null);
     if (cursor != null)
     cursor.moveToFirst();
  
     Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
     cursor.getString(1), cursor.getBlob(1));
  
   //return contact
       return contact;
  
      }
  
    //Getting All Contacts
       public List&lt;Contact&gt; getAllContacts() {
      List&lt;Contact&gt; contactList = new ArrayList&lt;Contact&gt;();
       //Select All Query
        String selectQuery = "SELECT * FROM contacts ORDER BY name";
  
       SQLiteDatabase db = this.getWritableDatabase();
       Cursor cursor = db.rawQuery(selectQuery, null);
       //looping through all rows and adding to list
        if (cursor.moveToFirst()) {
       do {
         Contact contact = new Contact();
       contact.setID(Integer.parseInt(cursor.getString(0)));
      contact.setName(cursor.getString(1));
      contact.setImage(cursor.getBlob(2));
      //Adding contact to list
        contactList.add(contact);
      } while (cursor.moveToNext());
       }
      //close inserting data from database
      db.close();
        //return contact list
         return contactList;
  
       }
  
       //Updating single contact
       public int updateContact(Contact contact) {
       SQLiteDatabase db = this.getWritableDatabase();
  
      ContentValues values = new ContentValues();
       values.put(KEY_NAME, contact.getName());
      values.put(KEY_IMAGE, contact.getImage());
  
     //updating row
      return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
      new String[] { String.valueOf(contact.getID()) });
  
     }
  
    //Deleting single contact
      public void deleteContact(Contact contact) {
    SQLiteDatabase db = this.getWritableDatabase();
     db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
      new String[] { String.valueOf(contact.getID()) });
       db.close();
      }
  
      //Getting contacts Count
       public int getContactsCount() {
     String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
      SQLiteDatabase db = this.getReadableDatabase();
      Cursor cursor = db.rawQuery(countQuery, null);
    cursor.close();
  
      //return count
    return cursor.getCount();
      }
       }
  
  
  
  
  
  
  
      import android.view.LayoutInflater;
   import android.view.View;
  import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
   import android.widget.ImageView;
   import android.widget.TextView;
  
     public class ContactImageAdapter extends ArrayAdapter&lt;Contact&gt;{
  Context context;
  int layoutResourceId;
  //BcardImage data[] = null;
   ArrayList&lt;Contact&gt; data=new ArrayList&lt;Contact&gt;();
   public ContactImageAdapter(Context context, int layoutResourceId, ArrayList&lt;Contact&gt;  
   data) {
   super(context, layoutResourceId, data);
     this.layoutResourceId = layoutResourceId;
   this.context = context;
     this.data = data;
     }
  
     @Override
   public View getView(int position, View convertView, ViewGroup parent) {
  View row = convertView;
  ImageHolder holder = null;
   if(row == null)
    {
    LayoutInflater inflater = ((Activity)context).getLayoutInflater();
    row = inflater.inflate(layoutResourceId, parent, false);
       holder = new ImageHolder();
   holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
   holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
       row.setTag(holder);
    }
  else
      {
    holder = (ImageHolder)row.getTag();
      }
     Contact picture = data.get(position);
      holder.txtTitle.setText("facebook");
        //convert byte to bitmap take from contact class
     byte[] outImage=picture._image;
     ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
    Bitmap theImage = BitmapFactory.decodeStream(imageStream);
     holder.imgIcon.setImageBitmap(theImage);
    return row;
   }
    static class ImageHolder
    {
    ImageView imgIcon;
     TextView txtTitle;
   }
      }
  
  
  
  
  
  
  
  
  
  
  
             public class Contact {
  
  // private variables
  int _id;
  String _name;
  byte[] _image;
  
  // Empty constructor
  public Contact() {
  
  }
  
  // constructor
  public Contact(int keyId, String name, byte[] image) {
  this._id = keyId;
  this._name = name;
  this._image = image;
  
  }
  
  // constructor
  public Contact(String contactID, String name, byte[] image) {
  this._name = name;
  this._image = image;
  
  }
  
  // constructor
  public Contact(String name, byte[] image) {
  this._name = name;
  this._image = image;
  }
  
  // getting ID
  public int getID() {
  return this._id;
  }
  
  // setting id
  public void setID(int keyId) {
  this._id = keyId;
  }
  
  // getting name
  public String getName() {
  return this._name;
  }
  
  // setting name
  public void setName(String name) {
  this._name = name;
  }
  
  // getting phone number
  public byte[] getImage() {
  return this._image;
  }
  
  // setting phone number
  public void setImage(byte[] image) {
  this._image = image;
  }
  }
  </code></pre>