title: Android application crashes when I click save button or search
body: <p>I am new to Android. I am running SQLite Filter ListView. I added an <code>EditText</code>, <code>priceEditTxt</code>, in the dialog box and another column "Price " in the database. When I search or click the save button, the application stops. I don't know how to solve it.</p>
  
  <p>The <code>Display()</code> function has two <code>EditText</code> and one save button. When I click the save button, the application, unfortunately, stops working.</p>
  
  <p>The <code>getPlanet()</code> function is used to show a search list when I click on the searchview. I don't have much understanding about it.</p>
  
  <p><strong>MainActivity.java:</strong></p>
  
  <pre><code>private void displayDialog()
  {
      Dialog d=new Dialog(this);
      d.setTitle("SQLite Database");
      d.setContentView(R.layout.dialog_layout);
  
      nameEditText= (EditText) d.findViewById(R.id.nameEditTxt);
  
          **////////////////////Price edit text which I add/////////////**
      priceEditText= (EditText) d.findViewById(R.id.priceEditTxt);
      saveBtn= (Button) d.findViewById(R.id.saveBtn);
      retrieveBtn= (Button) d.findViewById(R.id.retrieveBtn);
  
      saveBtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              save(nameEditText.getText().toString(),priceEditText.getText().toString());
          }
      });
      retrieveBtn.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
               getPlanets(null);
          }
      });
  
      d.show();
  }
  ** //save button took one argument "name" only, i add "price" later//**
  private void save(String name,String price)
  {
      DBAdapter db=new DBAdapter(this);
      db.openDB();
      if(db.add(name,price))
      {
          nameEditText.setText("");
          priceEditText.setText("");
      }else {
          Toast.makeText(this,"Unable To Save",Toast.LENGTH_SHORT).show();
      }
  
      db.closeDB();
  
      this.getPlanets(null);
  }
  
  private void getPlanets(String searchTerm)
  {
      planets.clear();
  
      DBAdapter db=new DBAdapter(this);
      db.openDB();
      Planet p=null;
      Cursor c=db.retrieve(searchTerm);
      while (c.moveToNext())
      {
          int id=c.getInt(0);
          String name=c.getString(1);
  
          p=new Planet();
          p.setId(id);
          p.setName(name);
  
          planets.add(p);
      }
  
      db.closeDB();
  
      lv.setAdapter(adapter);
  
  }
  </code></pre>
  
  <p><code>DBAdapter.java</code> contains the <code>add</code> and <code>retrieve</code> functions, which I call from <code>MainActivity</code>.  </p>
  
  <p><strong>DBAdapter.java:</strong></p>
  
  <pre><code>public class DBAdapter {
  
      Context c;
      SQLiteDatabase db;
      DBHelper helper;
  
      public DBAdapter(Context c) {
          this.c = c;
          helper=new DBHelper(c);
      }
  
      //OPEN DB
      public void openDB()
      {
          try
          {
             db=helper.getWritableDatabase();
          }catch (SQLException e)
          {
              e.printStackTrace();
          }
      }
  
      //CLOSE
      public void closeDB()
      {
          try
          {
              helper.close();
          }catch (SQLException e)
          {
              e.printStackTrace();
          }
      }
  
      //INSERT DATA
      public boolean add(String name,String price)
      {
          try
          {
              ContentValues cv=new ContentValues();
              cv.put(Constants.NAME, name);
              cv.put(Constants.PRICE, price);
              //Log.d(Constants.PRICE,"here we gooooooooooooooooooooooooooooooooooooooooooooooooooo");
  
              db.insert(Constants.TB_NAME, Constants.ROW_ID, cv);
  
              return true;
  
          }catch (SQLException e)
          {
              e.printStackTrace();
          }
          return false;
      }
  
      //RETRIEVE DATA AND FILTER
      public Cursor retrieve(String searchTerm)
      {
          String[] columns={Constants.ROW_ID,Constants.NAME};
          Cursor c=null;
  
          if(searchTerm != null &amp;&amp; searchTerm.length()&gt;0)
          {
              String sql="SELECT * FROM "+Constants.TB_NAME+" WHERE "+Constants.NAME+" LIKE '%"+searchTerm+"%'";
              c=db.rawQuery(sql,null);
              return c;
  
          }
  
          c=db.query(Constants.TB_NAME,columns,null,null,null,null,null);
          return c;
      }
  }
  </code></pre>
  
  <p><code>Constants.java</code> contains the creatable and droptable query. I don't know if create table query is right or not.</p>
  
  <p><strong>Constants.java:</strong></p>
  
  <pre><code>public class Constants {
      //COLUMNS
      static final String ROW_ID="id";
      static final String NAME="name";
      static final String PRICE="price";
  
      //DB
      static final String DB_NAME="ii_DB";
      static final String TB_NAME="ii_TB";
      static final int DB_VERSION=2;
  
      //CREATE TB
      static final String CREATE_TB="CREATE TABLE ii_TB(id INTEGER PRIMARY KEY AUTOINCREMENT,"
              + "name TEXT NOT NULL,price TEXT NOT NULL);";
  
      //DROP TB
      static final String DROP_TB="DROP TABLE IF EXISTS "+TB_NAME;
  }
  </code></pre>