when i run the application no table is being created.I have tried to turn on implementation of foreign key attribute and it didnt work. If there is another way to do it would be very helpful.This is the all the code for the project im trying to do its an Patient Appointment Scheduling System.So im trying to implement the foreign key in my appoinment table as you can see down below. DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
//columns for the Patient table
public static final String TABLE_NAME = "Patient_Reg_table";
public static final String COLUMN_PATIENT_ID= "PatientID";
public static final String COLUMN_FNAME= "FName";
public static final String COLUMN_LNAME = "LName";
public static final String COLUMN_GENDER= "Gender";
public static final String COLUMN_USERNAME = "Username";
public static final String COLUMN_PASSWORD = "Password";
public static final String COLUMN_EMAIL = "Email";
public static final String COLUMN_PNUM= "PNum";
public static final String COLUMN_PADD = "Postal_Address";
public static final String COLUMN_PROVINCE= "Province";
//column for the Doctor Table
public static final String TABLE_NAME1 = "Doctor_Reg_table";
public static final String COLUMN_DOCTOR_ID= "Doctor_ID";
public static final String COLUMN_FNAME1= "F_Name";
public static final String COLUMN_LNAME1 = "L_Name";
public static final String COLUMN_GENDER1= "Sex";
public static final String COLUMN_USERNAME1 = "Username_Doc";
public static final String COLUMN_PASSWORD1 = "Password_Doc";
public static final String COLUMN_EMAIL1 = "Email_Doc";
public static final String COLUMN_PNUM1= "PNum_Doc";
public static final String COLUMN_PADD1 = "Postal_Address_Doc";
public static final String COLUMN_PROVINCE1= "Province_Doc";
public static final String COLUMN_SPECIALITY= "Speciality";
//column for the Appointment-Booking table
public static final String TABLE_NAME2= "Appointment_table";
public static final String Appointment_ID = "Appoint_ID";
public static final String Booking_Date = "B_date";
public static final String Pat_ID="Pat_ID";
public static final String Doc_ID="Doc_ID";
public static final String Booking_TimeSlot = "B_time";
public static final String Speciality1 = "Speciality1";
//SQL statement for creation of a database
public static final String DATABASE_NAME="hit200.db";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(" CREATE TABLE " + TABLE_NAME + " (PatientID INTEGER PRIMARY KEY AUTOINCREMENT, FName TEXT , LName TEXT , Gender, Username TEXT , Password TEXT , Email TEXT , PNum INTEGER , Postal_Address TEXT , Province)");
db.execSQL(" CREATE TABLE " + TABLE_NAME1 + " ( Doctor_ID INTEGER PRIMARY KEY AUTOINCREMENT, F_Name TEXT , L_Name TEXT , Sex TEXT , Username_Doc TEXT , Password_Doc TEXT , Email_Doc TEXT , PNum_Doc INTEGER ,Postal_Address_Doc TEXT , Province_Doc TEXT , Speciality TEXT ) ");
db.execSQL(" CREATE TABLE " + TABLE_NAME2 + " (Appoint_ID INTEGER PRIMARY KEY AUTOINCREMENT, b_date date, b_time date, FOREIGN KEY (PATIENT_ID) REFERENCES TABLE_NAME(PatientID), FOREIGN KEY (DOCTOR_ID,CATEGORY) REFERENCES TABLE_NAME1 (Doctor_ID,Speciality)ON DELETE CASCADE)");
db.setForeignKeyConstraintsEnabled(true);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME1);
db.execSQL(" DROP TABLE IF EXISTS " + TABLE_NAME2);
}
public boolean insertData(String name, String lname, String gender , String username, String password, String email,
String pnum, String padd, String province)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_FNAME,name);
contentValues.put(COLUMN_LNAME,lname);
contentValues.put(COLUMN_GENDER,gender);
contentValues.put(COLUMN_USERNAME,username);
contentValues.put(COLUMN_PASSWORD,password);
contentValues.put(COLUMN_EMAIL,email);
contentValues.put(COLUMN_PADD,padd);
contentValues.put(COLUMN_PNUM,pnum);
contentValues.put(COLUMN_PROVINCE,province);
long rows=db.insertWithOnConflict(TABLE_NAME, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);
System.out.print(rows);
Log.d("User_cannot_to_dupliate",""+ rows);
long result0= db.insert(TABLE_NAME,null,contentValues);
if(result0 == -1)
return false;
else
return true;
}
public boolean InsertData(String name1, String lname1, String gender1 , String username1, String password1, String email1,
String padd1, String province1,String pnum1,String speciality1)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_FNAME1,name1);
contentValues.put(COLUMN_LNAME1,lname1);
contentValues.put(COLUMN_GENDER1,gender1);
contentValues.put(COLUMN_USERNAME1,username1);
contentValues.put(COLUMN_PASSWORD1,password1);
contentValues.put(COLUMN_EMAIL1,email1);
contentValues.put(COLUMN_PADD1,padd1);
contentValues.put(COLUMN_PROVINCE1,province1);
contentValues.put(COLUMN_PNUM1,pnum1);
contentValues.put(COLUMN_SPECIALITY,speciality1);
long rows=db.insertWithOnConflict(TABLE_NAME, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);
System.out.print(rows);
Log.d("User_cannot_to_dupliate",""+ rows);
long result= db.insert(TABLE_NAME1,null,contentValues);
if(result == -1)
return false;
else
return true;
}
public boolean UpdateData(String id,String name, String lname, String gender , String username, String password, String email,
String pnum, String padd, String province)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_PATIENT_ID,id);
contentValues.put(COLUMN_FNAME,name);
contentValues.put(COLUMN_LNAME,lname);
contentValues.put(COLUMN_GENDER,gender);
contentValues.put(COLUMN_USERNAME,username);
contentValues.put(COLUMN_PASSWORD,password);
contentValues.put(COLUMN_EMAIL,email);
contentValues.put(COLUMN_PADD,padd);
contentValues.put(COLUMN_PNUM,pnum);
contentValues.put(COLUMN_PROVINCE,province);
db.update(TABLE_NAME ,contentValues,"ID= ?", new String []{id});
return true;
}
public boolean UpdataData1(String id1,String name1, String lname1, String gender1 , String username1, String password1, String email1,
String padd1, String province1,String pnum1,String speciality1)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_DOCTOR_ID,id1);
contentValues.put(COLUMN_FNAME1,name1);
contentValues.put(COLUMN_LNAME1,lname1);
contentValues.put(COLUMN_GENDER1,gender1);
contentValues.put(COLUMN_USERNAME1,username1);
contentValues.put(COLUMN_PASSWORD1,password1);
contentValues.put(COLUMN_EMAIL1,email1);
contentValues.put(COLUMN_PADD1,padd1);
contentValues.put(COLUMN_PROVINCE1,province1);
contentValues.put(COLUMN_PNUM1,pnum1);
contentValues.put(COLUMN_SPECIALITY,speciality1);
db.update(TABLE_NAME1 ,contentValues,"ID= ?", new String []{id1});
return true;
}
public Integer DeleteData(String id)
{
SQLiteDatabase db=this.getWritableDatabase();
return db.delete(TABLE_NAME, "ID = ?",new String[] {id});
}
}