2015-04-08 1 views
0

J'essaie d'implémenter une base de données sqlite pour mon code afin de sauvegarder les variables de base. Cependant, lors de l'exécution sur l'émulateur, j'obtiens une erreur sans colonne. Toute idée serait appréciée. L'erreur:Aucune erreur de colonne lors de la création de la table SQLite dans Android avec Android Studio

(1) table reg_info has no column named user_pass 
04-08 00:28:35.402 3133-3133/com.example.cowman897.sqlitedatabase E/SQLiteDatabase﹕ Error inserting user_pass=ghd user_ass=ggg user_name=sd 
android.database.sqlite.SQLiteException: table reg_info has no column named user_pass (code 1): , while compiling: INSERT INTO reg_info(user_pass,user_ass,user_name) VALUES (?,?,?) 

Mon code est le suivant:

public class TableData { 

    public TableData() { 
    } 

    public static abstract class TableInfo implements BaseColumns { 
     public static final String USER_NAME = "user_name"; 
     public static final String USER_PASS = "user_pass"; 
     public static final String USER_ASS = "user_ass"; 
     public static final String DATABASE_NAME = "user_info"; 
     public static final String TABLE_NAME = "reg_info"; 
    } 
} 

public class DatabaseOperations extends SQLiteOpenHelper { 

    public static final int database_version = 3; 
    public String CREATE_QUERY = "create table " + TableData.TableInfo.TABLE_NAME + " (" + null + " integer primary key autoincrement, " + TableData.TableInfo.USER_NAME + " text not null, " + TableData.TableInfo.USER_PASS + " text not null, " + TableData.TableInfo.USER_ASS + " text not null);"; 

    public DatabaseOperations(Context context) { 
     super(context, TableData.TableInfo.DATABASE_NAME, null, database_version); 
     Log.d("Database operations", "Database Created"); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase sdb) { 
     sdb.execSQL(CREATE_QUERY); 
     Log.d("Database operations", "Table Created"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    } 

    public void putInformation(DatabaseOperations dop, String name, String pass, String ass) { 
     SQLiteDatabase SQ = dop.getWritableDatabase(); 
     ContentValues cv = new ContentValues(); 
     cv.put(TableData.TableInfo.USER_NAME, name); 
     cv.put(TableData.TableInfo.USER_PASS, pass); 
     cv.put(TableData.TableInfo.USER_ASS, ass); 
     long k = SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv); 
     Log.d("Database operations", "One raw inserted"); 
    } 
} 

et l'activité est juste

public class MainActivity extends ActionBarActivity { 

    Button sub; 
    String Class, Date, Assignment; 
    EditText Class_Field, Date_Field, Assignment_Field; 
    Context ctx = this; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     sub = (Button) findViewById(R.id.button); 
     Class_Field = (EditText) findViewById(R.id.editText); 
     Date_Field = (EditText) findViewById(R.id.editText2); 
     Assignment_Field = (EditText) findViewById(R.id.editText3); 

     sub.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Class = Class_Field.getText().toString(); 
       Date = Date_Field.getText().toString(); 
       Assignment = Assignment_Field.getText().toString(); 
       DatabaseOperations DB = new DatabaseOperations(ctx); 
       DB.putInformation(DB, Class, Date, Assignment); 
       Toast.makeText(getBaseContext(), "Assignment Added", Toast.LENGTH_LONG).show(); 
       finish(); 
      } 
     }); 
    } 


    @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_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

Toute aide serait appréciée.

+1

Je pense que votre table est pas créé ... –

+0

Avez-vous ajoutez la colonne 'user_pass' plus tard dans votre table? Il se peut qu'une fois que votre base de données est créée et que vous changiez de base de données, les nouveaux changements de base de données n'aient pas lieu. Pour cela, vous devez désinstaller l'application et l'exécuter à nouveau. @ user2850572 – Pooja

+0

Quelle est cette chose nulle dans l'instruction create? – drulabs

Répondre

0

Mettez à jour votre déclaration de création de la table comme suit et essayer,

private static final String CREATE_QUERY = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + " (" + 
               TableData.TableInfo._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
               TableData.TableInfo.USER_NAME + " text not null, " + 
               TableData.TableInfo.USER_PASS + " text not null, "+ 
               TableData.TableInfo.USER_ASS + " text not null "+ 
                ")";