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();
}
==============
thanks for everybody can help me
Aucun commentaire:
Enregistrer un commentaire