title: SQLitedatabase crash after upgrade
body: <p>I added 3 new columns to my Database from version 1 so I changed it to version 2 but now when I use an activity that uses my database my app crashes and shows this in the logcat.</p>
  
  <blockquote>
    <p>04-02 18:41:09.013: E/AndroidRuntime(19171): FATAL EXCEPTION: main
    04-02 18:41:09.013: E/AndroidRuntime(19171):
    java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.fullfrontalgames.numberfighter/com.fullfrontalgames.numberfighter.AccountSettings}:
    android.database.sqlite.SQLiteException: near "CREATE": syntax error
    (code 1): , while compiling: create table NFDB( ID integer primary key
    autoincrement,USERNAME  text CREATE UNIQUE INDEX idx_keytype ON
    tableName (USERNAME);USERNAME text,PASSWORD text,EMAIL
    text,NUMBERINPUT text,SCORE text,FRIENDS text);</p>
    
    <p>04-02 18:41:09.013: E/AndroidRuntime(19171): Caused by:
    android.database.sqlite.SQLiteException: near "CREATE": syntax error
    (code 1): , while compiling: create table NFDB( ID integer primary key
    autoincrement,USERNAME  text CREATE UNIQUE INDEX idx_keytype ON
    tableName (USERNAME);USERNAME text,PASSWORD text,EMAIL
    text,NUMBERINPUT text,SCORE text,FRIENDS text);</p>
  </blockquote>
  
  <p>I can't see the syntax error anywhere and I have my DBHelper helperclass to drop my old table and make the new table.</p>
  
  <p>here is my code of my DBAdapter and DBHelper classes</p>
  
  <pre><code>    package com.fullfrontalgames.numberfighter;
  
  import android.content.ContentValues;
  import android.content.Context;
  import android.database.Cursor;
  import android.database.SQLException;
  import android.database.sqlite.SQLiteDatabase;
  
  
  public class DBAdapter
  {
          static final String DATABASE_NAME = "NFDB.db";
          static final int DATABASE_VERSION = 2;
          public static final int NAME_COLUMN = 1;
          // TODO: Create public field for each column in your table.
          // SQL Statement to create a new database.
          static final String DATABASE_CREATE = "create table "+"NFDB"+
                                       "( " +"ID"+" integer primary key autoincrement,"+ "USERNAME  text CREATE UNIQUE INDEX idx_keytype ON tableName (USERNAME);" +
                                              "PASSWORD text,EMAIL text,NUMBERINPUT text,SCORE text,FRIENDS text); "; 
          // Variable to hold the database instance
          public  SQLiteDatabase db;
          // Context of the application using the database.
          private final Context context;
          // Database open/upgrade helper
          private DataBaseHelper DBHelper;
          public  DBAdapter(Context _context)
          {
              context = _context;
              DBHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
          }
          public  DBAdapter open() throws SQLException
          {
              db = DBHelper.getWritableDatabase();
              return this;
          }
          public void close()
          {
              db.close();
          }
  
          public  SQLiteDatabase getDatabaseInstance()
          {
              return db;
          }
  
          public void insertEntry(String userName,String password,String email)
          {
             ContentValues newValues = new ContentValues();
              // Assign values for each row.
              newValues.put("USERNAME", userName);
              newValues.put("PASSWORD",password);
              newValues.put("EMAIL", email);
              // Insert the row into your table
              db.insert("NFDB", null, newValues);
              ///Toast.makeText(context, "Reminder Is Successfully Saved", Toast.LENGTH_LONG).show();
          }
          public int deleteEntry(String userName)
          {
              //String id=String.valueOf(ID);
              String where="USERNAME=?";
              int numberOFEntriesDeleted= db.delete("NFDB", where, new String[]{userName}) ;
             // Toast.makeText(context, "Number fo Entry Deleted Successfully : "+numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
              return numberOFEntriesDeleted;
          }    
          public String getSinlgeEntry(String userName)
          {
              Cursor cursor=db.query("NFDB", null, " USERNAME=?", new String[]{userName}, null, null, null);
              if(cursor.getCount()&lt;1) // UserName Not Exist
              {
                  cursor.close();
                  return "NOT EXIST";
              }
              cursor.moveToFirst();
              String password= cursor.getString(cursor.getColumnIndex("PASSWORD"));
              cursor.close();
              return password;
  
          }
          public void  updateEntry(String userName,String password)
          {
              // Define the updated row content.
              ContentValues updatedValues = new ContentValues();
              // Assign values for each row.
              updatedValues.put("USERNAME", userName);
              updatedValues.put("PASSWORD",password);
  
  
              String where="USERNAME = ?";
              db.update("NFDB",updatedValues, where, new String[]{userName});              
          }
          public String getData() {
              String[] columns = new String[] { "ID", "USERNAME"};
              Cursor c = db.query("NFDB", columns, null, null, null, null, null, null);
              String result ="";
              int iRow = c.getColumnIndex("ID");
              int iName = c.getColumnIndex("USERNAME");
  
              for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
                  result = result + c.getString(iRow) + " " + c.getString(iName) + "/n";
              }
  
              return result;
          }
  
          public String getUsername(String searchName) {
              Cursor c = db.query("NFDB",
                                  new String[] { "USERNAME" },
                                  "USERNAME = ?",
                                  new String[] { searchName },
                                  null, null, null);
              if (c.moveToNext())
                  return c.getString(0);
              else
                  return "";
          }
          public void InsertScore(String Username,String Score)
          {
              ContentValues ScoreValues = new ContentValues();
              ScoreValues.put("USERNAME", Username);
              ScoreValues.put("SCORE", Score);
              db.insert("NFDB", null, ScoreValues);
  
          }
          public String GetGameScore(String Username,String Score)
          {
              Cursor cursor = db.query("NFDB", null, "USERNAME",new String[]{Username,Score}, null, null, null);
              cursor.moveToFirst();
              cursor.close();
              return Username;
          }
          public String GetAllScore()
          {
              String[] columns = new String[] {"ID","USERNAME","SCORE"};
              Cursor cursor = db.query("NFDB", columns, null, null, null, null, null);
              String result="";
              int iRow = cursor.getColumnIndex("ID");
              int iUsername = cursor.getColumnIndex("USERNAME");
              int iScore = cursor.getColumnIndex("SCORE");
  
              for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
                  result = result + cursor.getString(iRow) + " " + cursor.getString(iUsername) + " " + cursor.getString(iScore) + "/n";
              }
              return result;
              }
  
          public void InsertNumber(String Username,String Number)
          {
              ContentValues NumberValues = new ContentValues();
              NumberValues.put("USERNAME", Username);
              NumberValues.put("NUMBERINPUT", Number);
              db.insert("NFDB", null, NumberValues);
              }
  
          public String GetNumber(String Username,String Number)
          {
              Cursor cursor = db.query("NFDB", null, "USERNAME", new String[]{Username,Number}, null, null, null, null);
              cursor.moveToFirst();
              cursor.close();
              return Username;
          }
  
          public String GetAllNumbers()
          {
              String[] columns = new String[] {"ID","USERNAME","NUMBERINPUT"};
              Cursor cursor = db.query("NFDB", columns, null, null, null, null, null, null);
              String result="";
              int iRow = cursor.getColumnIndex("ID");
              int iName = cursor.getColumnIndex("USERNAME");
              int iNumber = cursor.getColumnIndex("NUMBERINPUT");
  
              for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
                  result = result + cursor.getString(iRow) + " " + cursor.getString(iName) + " " + cursor.getString(iNumber) + "/n";
              }
              return result;
  
              }
          public void InsertFriends (String Username,String Friends)
          {
              ContentValues FriendValues = new ContentValues();
              FriendValues.put("USERNAME", Username);
              FriendValues.put("FRIENDS", Friends);
              db.insert("NFDB", null, FriendValues);
          }
  
          public int DeleteFriends(String Username,String Friends)
          {
              String where = "USERNAME=?,FRIENDS=?";
              int numberOfEntriesDeleted = db.delete("NFDB", where, new String[]{Username,Friends});
              return numberOfEntriesDeleted;
          }
  
          public String GetFriend(String Username,String Friend)
          {
              Cursor cursor = db.query("NFDB", null, "USERNAME", new String[]{Username,Friend}, null, null, null, null);
              cursor.moveToFirst();
              cursor.close();
              return Username;
          }
  
  
          public String GetAllFriends()
          {
              String[] columns = new String[] {"ID","USERNAME","FRIENDS"};
              Cursor cursor = db.query("NFDB", columns, null, null, null, null, null, null);
              String result="";
              int iRow = cursor.getColumnIndex("ID");
              int iName = cursor.getColumnIndex("USERNAME");
              int iFriends = cursor.getColumnIndex("FRIENDS");
  
              for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
                  result = result + cursor.getString(iRow) + " " + cursor.getString(iName) + " " + cursor.getString(iFriends) + "/n";
              }
              return result;
  
              }
  
  
          }
  </code></pre>
  
  <blockquote>
    <p>package com.fullfrontalgames.numberfighter;</p>
  
  <pre><code>import android.content.Context;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteDatabase.CursorFactory;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.util.Log;
  
  public class DataBaseHelper extends SQLiteOpenHelper
  {
      public DataBaseHelper(Context context, String name,CursorFactory factory, int version)
      {
                 super(context, name, factory, version);
      }
  
        // TODO Auto-generated constructor stub
  
    // Called when no database exists in disk and the helper class needs
      // to create a new one.
      @Override
      public void onCreate(SQLiteDatabase _db)
      {
              _db.execSQL(DBAdapter.DATABASE_CREATE);
  
      }
      // Called when there is a database version mismatch meaning that the version
      // of the database on disk needs to be upgraded to the current version.
      @Override
      public void onUpgrade(SQLiteDatabase _db, int _oldVersion, int _newVersion)
      {
              // Log the version upgrade.
              Log.w("TaskDBAdapter", "Upgrading from version " +_oldVersion + " to " +_newVersion + ", which will destroy all old data");
  
              // Upgrade the existing database to conform to the new version. Multiple
              // previous versions can be handled by comparing _oldVersion and _newVersion
              // values.
              // The simplest case is to drop the old table and create a new one.
              _db.execSQL("DROP TABLE IF EXISTS " + "NFDB");
              // Create a new one.
              onCreate(_db);
      }
  
  
  
  
    }
  </code></pre>
  </blockquote>