vendredi 15 janvier 2016

android sqlite foriegn key NullPointerException

I'm using Android studio , sqlite database my code was working correctly , but when I added "posid" column to "contacts" table the program doesn't work

public class DBAdapter {

//database info
 String DATABASE_NAME = "LDB";
 int DATABASE_VERSION = 1;

 String TABLE1 = "contacts";
 String KEY_ID="id";
 String KEY_NAME="name";
 String KEY_EMAIL="email";
String KEY_POSID="posid";


String TABLE2 = "positions";
String KEY_PID = "pid";
String KEY_POSITION = "pos_name";
String KEY_salary="salary";


private String DATABASE_Table1 =
        "create table contacts (id integer primary key autoincrement, " +
                "name text not null," +
                " email text not null," +
                "posid integer not null ," +
                "  FOREIGN KEY(posid) REFERENCES positions(Pid));"; 



private String DATABASE_Table2 =
        "create table positions (Pid integer primary key autoincrement," +
                "pos_name text not null," +
                " salary text not null);";


private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase db;

public DBAdapter(Context  ctx)
{
    this.context = ctx;
    DBHelper = new DatabaseHelper(context);
}

private class DatabaseHelper extends SQLiteOpenHelper  {

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_Table1);
        db.execSQL(DATABASE_Table2);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS contacts");
        db.execSQL("DROP TABLE IF EXISTS positions");
        onCreate(db);

    }
}

public DBAdapter open() throws SQLException
{
    db = DBHelper.getWritableDatabase();
    return this;

}


//---closes the database---
public void close()
{
    DBHelper.close();
}


//---insert a contact into the database---
public long insertContact(String name, String email,String posid)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_NAME, name);
    initialValues.put(KEY_EMAIL, email);
   initialValues.put(KEY_POSID,Integer.parseInt(posid) );

    return db.insert(TABLE1, null, initialValues);

}


public long insertPosition(String position, String salary)
{
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_POSITION, position);
    initialValues.put(KEY_salary, salary);
    return db.insert(TABLE2, null, initialValues);
}



//---retrieves all the contacts---
public Cursor getAllContacts()
{
  return db.rawQuery("SELECT * FROM contacts, positions where contacts.posid =positions.pid" , null);
}

}

==============

public class MainActivity extends Activity {

  DBAdapter db = new DBAdapter(this);
  EditText et1 ,et2,et3 ,et4,et5,et6;

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

     db = new DBAdapter(this);
      et1=(EditText)findViewById(R.id.editText1);
     et2=(EditText)findViewById(R.id.editText2);
     et3=(EditText)findViewById(R.id.editText3);
    et5=(EditText)findViewById(R.id.editText4);
    et6=(EditText)findViewById(R.id.editText6);
}


public void insertBtn(View v) throws SQLException {
    db.open();
   db.insertContact(et2.getText().toString(), et3.getText().toString(),  et4.getText().toString());

    db.close();
    Toast.makeText(getBaseContext(), "Inserted", Toast.LENGTH_SHORT).show();
     }


public void inserPostBtn(View v) throws SQLException {
    db.open();
    db.insertPosition(et5.getText().toString(),
            et6.getText().toString() );
    db.close();
    Toast.makeText(getBaseContext(), "Inserted",Toast.LENGTH_SHORT).show();
    Log.v("insert pos", "inserted ...................");
}

 public void selectallBtn(View v)throws SQLException
 {
db.open();
Cursor c = db.getAllContacts();
if (c.moveToFirst())
{
    do {
        DisplayContact(c);
    } while (c.moveToNext());
}
db.close();
}

private void DisplayContact(Cursor c)
{

  Toast.makeText(getBaseContext(),"id: " + c.getString(0) + "\n" +"Name: " + c.getString(1) + "\n" +"Email: " + c.getString(2) +"\n" +"position: " + c.getString(3) +"\n" +"salary: " + c.getString(4),Toast.LENGTH_LONG).show();


}

==============

logcat while insert contact enter image description here

thanks for everybody can help me

Aucun commentaire:

Enregistrer un commentaire