how to browse image and save in sqllite database
<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>
