mardi 8 septembre 2015

NPE in Android Studio when communicating with database

I am new to Android Development and I get a NullPointerException when trying to get a writable database. Here is the code:

Main Activity

public class MainActivity extends AppCompatActivity {

MyDatabase myDatabase;
SQLiteDatabase sqLiteDatabase;
EditText textOne;
EditText textTwo;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textOne = (EditText) findViewById(R.id.textOne);
    textTwo = (EditText) findViewById(R.id.textTwo);

}

public void addInfo(View view) {
    String name = textOne.getText().toString();
    String address = textTwo.getText().toString();
    myDatabase = new MyDatabase(context);
    sqLiteDatabase = myDatabase.getWritableDatabase();
    myDatabase.addData(name, address, sqLiteDatabase);
    myDatabase.close();

    textOne.setText("");
    textTwo.setText("");

}

}

My database code:

public class MyDatabase extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "info.db";
private static final String TABLE_NAME = "Personal_Info";
private static final String NAME_COLUMN = "names";
private static final String ADDRESS_COLUMN = "address";
private static final String ROW_IDENTIFIER = "_id";
private static int DATABSE_VERSION = 1;
private static String query = "CREATE TABLE " + TABLE_NAME + "(" + ROW_IDENTIFIER + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME_COLUMN + " TEXT, " + ADDRESS_COLUMN + " TEXT);";

public MyDatabase(Context context) {
    super(context, DATABASE_NAME, null, DATABSE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {

    try {
        db.execSQL(query);
    } catch (SQLException e) {
        e.printStackTrace();
    }

}

public void addData(String name, String address, SQLiteDatabase db) {

    ContentValues contentValues = new ContentValues();
    contentValues.put(NAME_COLUMN,name);
    contentValues.put(ADDRESS_COLUMN,address);
    db.insert(TABLE_NAME,null,contentValues);

}

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

    try {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME );
    } catch (SQLException e) {
        e.printStackTrace();
    }

    onCreate(db);

}

}

The error is thrown on this line in MainActivity:

myDatabase = new MyDatabase(context);

All input is welcome.

Aucun commentaire:

Enregistrer un commentaire