Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Had the same problem, tried many solutions, finnaly i made an abstract method wich constructs the database structure and has extended class for the table classes.</p> <p>This is my Database constructor class and is Abstract:</p> <pre><code>public abstract class dbAdapter { public static String DATABASE_NAME = ""; public static final int DATABASE_VERSION = 1; public static final String DATABASE_TABLE1 = "ContactName"; public static final String DATABASE_TABLE2 = "PhoneNumber"; public static DbHelper ourHelper; public static Context ourContext; public static SQLiteDatabase ourDatabase; boolean ourConstructorBool = false; boolean ourDB = false; public static final String ContactNameTable = "CREATE TABLE "+DATABASE_TABLE1+" (" + ContactNameAdapter.KEY_ROWID+" INTEGER PRIMARY KEY AUTOINCREMENT, " + ContactNameAdapter.KEY_NAME+" TEXT, " + ContactNameAdapter.KEY_BIRTH_DATE+" TEXT);"; public static final String PhoneNumberTable = "CREATE TABLE "+DATABASE_TABLE2+" (" + PhoneNumberAdapter.KEY_NUMBER+" TEXT , " + PhoneNumberAdapter.KEY_DESCRIPTION+" TEXT, " + PhoneNumberAdapter.KEY_CONTACTID+" TEXT, " + "FOREIGN KEY(" + PhoneNumberAdapter.KEY_CONTACTID +") REFERENCES " + (ContactNameAdapter.DATABASE_TABLE)+"("+ContactNameAdapter.KEY_ROWID+") ON DELETE CASCADE"+ ");"; static class DbHelper extends SQLiteOpenHelper{ public DbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(ContactNameTable); db.execSQL(PhoneNumberTable); } @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { db.execSQL("DROP TABLE IF EXISTS " + ContactNameAdapter.DATABASE_TABLE); db.execSQL("DROP TABLE IF EXISTS " + PhoneNumberAdapter.DATABASE_TABLE); onCreate(db); } } public dbAdapter(Activity a){ if(!ourConstructorBool == true){ ourContext = a; DATABASE_NAME = a.getString(Asaf.com.contactsEX.R.string.DB_NAME); ourConstructorBool = true; } } public dbAdapter open() throws SQLException{ if(!ourDB == true){ ourHelper = new DbHelper(ourContext); ourDB = true; } ourDatabase = ourHelper.getWritableDatabase(); return this; } public void close(){ if(ourDatabase.isOpen()) ourHelper.close(); } } </code></pre> <p>And this is one of my table classes, the rest of the classes are implemented the same, just add as much as you like:</p> <pre><code>public class PhoneNumberAdapter extends dbAdapter{ public static final String KEY_NUMBER = "PhoneNumber"; public static final String KEY_DESCRIPTION = "Description"; public static final String KEY_CONTACTID = "ContactName_id"; public static final String DATABASE_TABLE = "PhoneNumber"; public PhoneNumberAdapter(Activity a){ super(a); } public long createEntry(String number, String description,long id){ // TODO Auto-generated method stub ContentValues cv = new ContentValues(); cv.put(KEY_NUMBER, number); cv.put(KEY_DESCRIPTION, description); cv.put(KEY_CONTACTID, id); return ourDatabase.insert(DATABASE_TABLE, null,cv); } } </code></pre> <p>Hope I helped.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload