title: Insert image and some text fields into SQLite database - Android
body: <p>I am new in Android developing and I am trying to insert data into SQLite database in Android. I have a problem find the solution, where can I see code, how to insert Image and Text into database. Do you know some articles/books or 
  something else which they help me ?</p>
  
  <p>I write some code with inserting only text, but I cannot insert both together.
  After inserting, I want to retrieve text and image in detail activity.</p>
  
  <p>Very thank you for help.</p>
  
  <p>I can upload the code.</p>
  
  <p>My DatabaseHelper:</p>
  
  <pre><code> public class DatabaseHelpher extends SQLiteOpenHelper {
      private static final String DATABASE_NAME="student";
      private static final int DATABASE_VERSION = 1;
      private static final String STUDENT_TABLE = "stureg";
      private static final String STU_TABLE = "create table "+STUDENT_TABLE +"(name TEXT,email TEXT primary key,roll TEXT,address TEXT,branch TEXT)";
  
      Context context;
  
      public DatabaseHelpher(final Context context) {
          super(context, Environment.getExternalStorageDirectory()
                  + File.separator + DATABASE_NAME, null, DATABASE_VERSION);
          this.context = context;
      }
  
      @Override
      public void onCreate(SQLiteDatabase db) {
  
          db.execSQL(STU_TABLE);
      }
  
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  
          db.execSQL("DROP TABLE IF EXISTS " + STUDENT_TABLE);
  
          // Create tables again
          onCreate(db);
      }
  
      public void insertIntoDB(String name,String email,String roll,String address,String branch){
          Log.d("insert", "before insert");
  
          // 1. get reference to writable DB
          SQLiteDatabase db = this.getWritableDatabase();
  
          // 2. create ContentValues to add key "column"/value
          ContentValues values = new ContentValues();
          values.put("name", name);
          values.put("email", email);
          values.put("roll", roll);
           values.put("address", address);
          values.put("branch", branch);
  
          // 3. insert
          db.insert(STUDENT_TABLE, null, values);
          // 4. close
          db.close();
          Toast.makeText(context, "insert value", Toast.LENGTH_LONG);
          Log.i("insert into DB", "After insert");
  
  
  
      }
  
      public List&lt;DatabaseModel&gt; getDataFromDB(){
          List&lt;DatabaseModel&gt; modelList = new ArrayList&lt;DatabaseModel&gt;();
          String query = "select * from "+STUDENT_TABLE;
  
          SQLiteDatabase db = this.getWritableDatabase();
          Cursor cursor = db.rawQuery(query,null);
          if (cursor.moveToFirst()){
              do {
                  DatabaseModel model = new DatabaseModel();
                  model.setName(cursor.getString(0));
                  model.setEmail(cursor.getString(1));
                  model.setRoll(cursor.getString(2));
                  model.setAddress(cursor.getString(3));
                  model.setBranch(cursor.getString(4));
  
                  modelList.add(model);
              }while (cursor.moveToNext());
          }
  
  
          Log.d("student data", modelList.toString());
  
  
          return modelList;
      }
  
  
  
      public void deleteARow(String email){
          SQLiteDatabase db= this.getWritableDatabase();
          db.delete(STUDENT_TABLE, "email" + " = ?", new String[] { email });
          db.close();
      }
  </code></pre>
  
  <p>DatabaseModel:</p>
  
  <pre><code>public class DatabaseModel {
  private String name;
  private String roll;
  private String address;
  private String branch;
  private String email;
  private String image;
  
  public String getName() {
      return name;
  }
  
  public void setName(String name) {
      this.name = name;
  }
  
  public String getRoll() {
      return roll;
  }
  
  public void setRoll(String roll) {
      this.roll = roll;
  }
  
  public String getAddress() {
      return address;
  }
  
  public void setAddress(String address) {
      this.address = address;
  }
  
  public String getBranch() {
      return branch;
  }
  
  public void setBranch(String branch) {
      this.branch = branch;
  }
  
  public String getEmail() {
      return email;
  }
  
  public void setEmail(String email) {
      this.email = email;
  }
  
  public String getImage() {
      return image;
  }
  
  public void setImage (String image) {
      this.image = image;
  }
  </code></pre>
  
  <p>DetailsActivity:</p>
  
  <pre><code> public class DetailsActivity extends AppCompatActivity {
      DatabaseHelpher helpher;
      List&lt;DatabaseModel&gt; dbList;
      int position;
      TextView tvname,tvemail,tvroll,tvaddress,tvbranch;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
  
          setContentView(R.layout.activity_details);
  
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
          getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  
  
          Intent intent = getIntent();
          Bundle bundle = intent.getExtras();
  
          // 5. get status value from bundle
           position = bundle.getInt("position");
  
          tvname =(TextView)findViewById(R.id.name);
          tvemail =(TextView)findViewById(R.id.email);
          tvroll =(TextView)findViewById(R.id.roll);
          tvaddress =(TextView)findViewById(R.id.address);
          tvbranch =(TextView)findViewById(R.id.branch);
          helpher = new DatabaseHelpher(this);
          dbList= new ArrayList&lt;DatabaseModel&gt;();
          dbList = helpher.getDataFromDB();
  
          if(dbList.size()&gt;0){
              String name= dbList.get(position).getName();
              String email=dbList.get(position).getEmail();
              String roll=dbList.get(position).getRoll();
              String address=dbList.get(position).getAddress();
              String branch=dbList.get(position).getBranch();
              tvname.setText(name);
              tvemail.setText(email);
              tvroll.setText(roll);
              tvaddress.setText(address);
              tvbranch.setText(branch);
          }
  
          Toast.makeText(DetailsActivity.this, dbList.toString(), Toast.LENGTH_LONG);
      }
  
  
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_details, menu);
          return true;
      }
  
  
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          switch (item.getItemId()) {
              case android.R.id.home:
                  finish();
                  return true;
          }
          return super.onOptionsItemSelected(item);
      }
  </code></pre>
  
  <p>MainActivity:</p>
  
  <pre><code>public class MainActivity extends AppCompatActivity {
  EditText etName,etRoll,etAddress,etBranch,etEmail;
  Button btnSubmit,btngetdata,btndroptable;
  DatabaseHelpher helpher;
  List&lt;DatabaseModel&gt; dbList;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
      dbList= new ArrayList&lt;DatabaseModel&gt;();
      etName = (EditText)findViewById(R.id.etName);
      etRoll = (EditText)findViewById(R.id.etRoll);
      etAddress =(EditText)findViewById(R.id.etAddress);
      etBranch = (EditText)findViewById(R.id.etBranch);
      etEmail = (EditText)findViewById(R.id.etEmail);
      btnSubmit  =(Button)findViewById(R.id.btnSubmit);
      btngetdata =(Button)findViewById(R.id.btngetdata);
  
      btngetdata.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              startActivity(new Intent(MainActivity.this, SecondActivity.class));
  
             // startActivity(new Intent(MainActivity.this, DetailsActivity.class));
  
          }
      });
  
      btnSubmit.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
  
              String name=etName.getText().toString();
              String email=etEmail.getText().toString();
              String roll=etRoll.getText().toString();
              String address=etAddress.getText().toString();
              String branch=etBranch.getText().toString();
  
          if(name.equals("") || email.equals("") || roll.equals("") ||address.equals("")||branch.equals("")){
              Toast.makeText(MainActivity.this,"Please fill all the fields",Toast.LENGTH_LONG).show();
          }else {
              helpher = new DatabaseHelpher(MainActivity.this);
              helpher.insertIntoDB(name, email, roll, address, branch);
          }
              etName.setText("");
              etRoll.setText("");
              etAddress.setText("");
              etBranch.setText("");
              etEmail.setText("");
  
              Toast.makeText(MainActivity.this, "insert value", Toast.LENGTH_LONG);
  
          }
      });
  </code></pre>
  
  <p>RecyclerAdapter:</p>
  
  <pre><code> public class RecyclerAdapter extends RecyclerView.Adapter&lt;RecyclerAdapter.ViewHolder&gt; {
  
      static   List&lt;DatabaseModel&gt; dbList;
          static  Context context;
          RecyclerAdapter(Context context, List&lt;DatabaseModel&gt; dbList ){
              this.dbList = new ArrayList&lt;DatabaseModel&gt;();
              this.context = context;
              this.dbList = dbList;
  
          }
      @Override
      public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
          View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
                  R.layout.item_row, null);
  
  
          ViewHolder viewHolder = new ViewHolder(itemLayoutView);
          return viewHolder;
      }
  
      @Override
      public void onBindViewHolder(RecyclerAdapter.ViewHolder holder, int position) {
  
          holder.name.setText(dbList.get(position).getName());
          holder.email.setText(dbList.get(position).getEmail());
  
      }
  
      @Override
      public int getItemCount() {
          return dbList.size();
      }
  
      public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  
          public TextView name,email;
  
          public ViewHolder(View itemLayoutView) {
              super(itemLayoutView);
              name = (TextView) itemLayoutView.findViewById(R.id.rvname);
              email = (TextView)itemLayoutView.findViewById(R.id.rvemail);
              itemLayoutView.setOnClickListener(this);
  
          }
  
          @Override
          public void onClick(View v) {
              Intent intent = new Intent(context,DetailsActivity.class);
  
              Bundle extras = new Bundle();
              extras.putInt("position",getAdapterPosition());
              intent.putExtras(extras);
  
              context.startActivity(intent);
              Toast.makeText(RecyclerAdapter.context, "you have clicked Row " + getAdapterPosition(), Toast.LENGTH_LONG).show();
          }
      }
  }
  </code></pre>
  
  <p>SecondActivity:</p>
  
  <pre><code>  public class SecondActivity extends AppCompatActivity {
      DatabaseHelpher helpher;
      List&lt;DatabaseModel&gt; dbList;
      RecyclerView mRecyclerView;
      private RecyclerView.Adapter mAdapter;
      private RecyclerView.LayoutManager mLayoutManager;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
          getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  
  
          helpher = new DatabaseHelpher(this);
          dbList= new ArrayList&lt;DatabaseModel&gt;();
          dbList = helpher.getDataFromDB();
  
  
          mRecyclerView = (RecyclerView)findViewById(R.id.recycleview);
  
          mRecyclerView.setHasFixedSize(true);
  
          // use a linear layout manager
          mLayoutManager = new LinearLayoutManager(this);
          mRecyclerView.setLayoutManager(mLayoutManager);
  
          // specify an adapter (see also next example)
          mAdapter = new RecyclerAdapter(this,dbList);
          mRecyclerView.setAdapter(mAdapter);
  
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_second, menu);
          return true;
      }
  
  
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          switch (item.getItemId()) {
              case android.R.id.home:
                  finish();
                  return true;
          }
          return super.onOptionsItemSelected(item);
      }
  }
  </code></pre>
  
  <p><strong>Layouts</strong></p>
  
  <p>ActivityDetails:</p>
  
  <pre><code> &lt;LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"&gt;
  
      &lt;android.support.design.widget.AppBarLayout
          android:id="@+id/appbar"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"&gt;
  
          &lt;android.support.v7.widget.Toolbar
              android:id="@+id/toolbar"
              android:layout_width="match_parent"
              android:layout_height="?attr/actionBarSize"
              android:background="?attr/colorPrimary"
              app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
              app:layout_scrollFlags="scroll|enterAlways" /&gt;
      &lt;/android.support.design.widget.AppBarLayout&gt;
  
      &lt;TextView
          android:id="@+id/name"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="name"
          android:paddingTop="15dp"
          android:paddingLeft="20dp"
          android:textSize="36sp" /&gt;
  
      &lt;TextView
          android:id="@+id/roll"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="Roll"/&gt;
      &lt;TextView
          android:id="@+id/address"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="Address"/&gt;
      &lt;TextView
          android:id="@+id/branch"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="Branch"/&gt;
      &lt;TextView
          android:id="@+id/email"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:text="Email"/&gt;
      &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>ActivityMain:</p>
  
  <pre><code>  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:orientation="vertical"&gt;
      &lt;android.support.design.widget.AppBarLayout
          android:id="@+id/appbar"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"&gt;
  
          &lt;android.support.v7.widget.Toolbar
              android:id="@+id/toolbar"
              android:layout_width="match_parent"
              android:layout_height="?attr/actionBarSize"
              android:background="?attr/colorPrimary"
              app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
              app:layout_scrollFlags="scroll|enterAlways" /&gt;
  
      &lt;/android.support.design.widget.AppBarLayout&gt;
  
      &lt;ScrollView
          android:layout_width="match_parent"
          android:layout_height="match_parent"&gt;
  
          &lt;LinearLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical" &gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Enter Email"/&gt;
                  &lt;EditText
                      android:id="@+id/etEmail"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Enter Branch"/&gt;
                  &lt;EditText
                      android:id="@+id/etBranch"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Enter Address"/&gt;
                  &lt;EditText
                      android:id="@+id/etAddress"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Enter Roll"/&gt;
                  &lt;EditText
                      android:id="@+id/etRoll"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;TextView
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Enter Name"/&gt;
                  &lt;EditText
                      android:id="@+id/etName"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="horizontal"&gt;
                  &lt;Button
                      android:id="@+id/btnSubmit"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:text="uložit do databáze"
                      android:textColor="#ffffff"
                      android:background="@color/colorPrimary"/&gt;
  
              &lt;/LinearLayout&gt;
  
              &lt;LinearLayout
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:layout_marginTop="10dp"
                  android:orientation="horizontal"&gt;
                  &lt;Button
                      android:id="@+id/btngetdata"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:text="Zobrazit seznam rumů"
                      android:textColor="#ffffff"
                      android:background="@color/colorPrimary"/&gt;
  
              &lt;/LinearLayout&gt;
  
          &lt;/LinearLayout&gt;
      &lt;/ScrollView&gt;
  
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>ActivitySecond:</p>
  
  <pre><code> &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:orientation="vertical"&gt;
      &lt;android.support.design.widget.AppBarLayout
          android:id="@+id/appbar"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"&gt;
  
          &lt;android.support.v7.widget.Toolbar
              android:id="@+id/toolbar"
              android:layout_width="match_parent"
              android:layout_height="?attr/actionBarSize"
              android:background="?attr/colorPrimary"
              app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
              app:layout_scrollFlags="scroll|enterAlways" /&gt;
      &lt;/android.support.design.widget.AppBarLayout&gt;
      &lt;LinearLayout
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal"&gt;
  
  
          &lt;android.support.v7.widget.RecyclerView
              android:id="@+id/recycleview"
              android:layout_width="match_parent"
              android:layout_height="match_parent"/&gt;
  
      &lt;/LinearLayout&gt;
      &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>item_row:</p>
  
  <pre><code>  &lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:card_view="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_margin="5dp"
      android:orientation="horizontal"
      card_view:cardCornerRadius="5dp"
      card_view:cardUseCompatPadding="true" &gt;
  
      &lt;RelativeLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="?android:selectableItemBackground"  &gt;
  
  
          &lt;TextView
              android:id="@+id/rvemail"
              android:layout_width="fill_parent"
              android:layout_height="45dp"
              android:textAlignment="center"
              android:padding="10dp"
              android:gravity="right"
              android:text="Email"
              android:textColor="@android:color/black"
              android:layout_marginLeft="10dp"
               /&gt;
  
          &lt;TextView
              android:id="@+id/rvname"
              android:layout_width="wrap_content"
              android:layout_height="45dp"
              android:gravity="left"
              android:padding="10dp"
              android:textAlignment="center"
              android:text="Name"
              android:textColor="@android:color/black"
              android:layout_alignParentTop="true"
              android:layout_alignParentLeft="true"
              android:layout_alignParentStart="true" /&gt;
  
      &lt;/RelativeLayout&gt;
  
  &lt;/android.support.v7.widget.CardView&gt;
  </code></pre>
  
  <p>Very Very thanks for help, I dont know how to resolve problem with insert image and text into one database, then store them in mobile and after click to row then app display image and texts.
  PS: sorry for a lot of code, but I dont know what to do :(</p>