jeudi 21 janvier 2016

Foreign Key in SQLite ANDROID

Hi guys I'm trying to show in listview my data in database however I need to join two tables now I'm having trouble with this. I need to left join them and Customer_Code is a foreign key to the collection table So that I can get the name from the customer table to the collection table. However its not working

Here is my database can you help me? Thanksenter code here

public class DatabaseHandler extends SQLiteOpenHelper {

private static final String TAG = DatabaseHandler.class.getSimpleName();

//Database Version
private static final int DATABASE_VERSION = 1;

//Database Name
private static final String DATABASE_NAME = "aspinERP";

//Tables Name
private static final String CUSTOMER_TABLE = "customer_tb";
private static final String COLLECTION_TABLE = "collection_tb";
private static final String COLLECTION_LINE = "collectionline_tb";

//Common Column Name
private static final String CUSTOMER_CODE = "customer_code";
private static final String TRANSACTION_CODE = "transaction_code";
private static final String AMOUNT_DUE = "amount_due";


//Collection Table Columns Name
private static final String COLLECTION_CODE = "collection_code";
private static final String TIN = "tin";
private static final String OR_NO = "or_no";
private static final String DATE = "date";
private static final String AMOUNT_PAID = "amount_paid";
private static final String REMARKS = "remarks";
private static final String STATUS = "status";


//Collection_Line Columns Name
private static final String COLLECTION_LINE_ID = "collectionLine_id";
private static final String DOCUMENT_NO = "document_no";


//Customer Column Name
private static final String NAME = "customer_name";
private static final String AREA = "collector_name";


//Collection Create Table
private static final String CREATE_TABLE_COLLECTION = "CREATE TABLE "
        + COLLECTION_TABLE + "(" + COLLECTION_CODE + " TEXT PRIMARY KEY," +   
CUSTOMER_CODE
        + " TEXT," + TRANSACTION_CODE + " TEXT," + TIN + " TEXT," + OR_NO +  
" TEXT," + DATE
        + " TEXT," + AMOUNT_DUE + " TEXT," + AMOUNT_PAID + " TEXT," + 
REMARKS + " TEXT," + STATUS
        + " TEXT," + " FOREIGN KEY ("+CUSTOMER_CODE+") REFERENCES 
"+COLLECTION_TABLE+" ("+COLLECTION_CODE+"))";

//  + " FOREIGN KEY ("+CUSTOMER_CODE+") REFERENCES "+COLLECTION_TABLE+" 

  ("+COLLECTION_CODE+"))";

private static final String CREATE_TABLE_COLLECTION_LINE = "CREATE TABLE "
        + COLLECTION_LINE + "(" + COLLECTION_LINE_ID + " TEXT PRIMARY KEY," 
+ TRANSACTION_CODE
        + " TEXT," + DOCUMENT_NO + " TEXT," + AMOUNT_DUE + " TEXT" + ")";

private static final String CREATE_TABLE_CUSTOMER = "CREATE TABLE "
        + CUSTOMER_TABLE + "(" + CUSTOMER_CODE + " TEXT PRIMARY KEY," + NAME
        + " TEXT," + AREA + " TEXT" + ")";


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


@Override
public void onCreate(SQLiteDatabase db) {

    //Creating required tables
    db.execSQL(CREATE_TABLE_COLLECTION);
    db.execSQL(CREATE_TABLE_COLLECTION_LINE);
    db.execSQL(CREATE_TABLE_CUSTOMER);

}

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

    db.execSQL("DROP TABLE IF EXISTS " + COLLECTION_TABLE);
    db.execSQL("DROP TABLE IF EXISTS " + COLLECTION_LINE);
    db.execSQL("DROP TABLE IF EXISTS " + CUSTOMER_TABLE);

    //create new tables
    onCreate(db);

}

public void addCollection(String collection_code, String customer_code,   
String transaction_code,
                          String tin, String or_no, String date, String   
amount_due, String amount_paid,
                          String remarks, String status) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(COLLECTION_CODE, collection_code);
    values.put(CUSTOMER_CODE, customer_code);
    values.put(TRANSACTION_CODE, transaction_code);
    values.put(TIN, tin);
    values.put(OR_NO, or_no);
    values.put(DATE, date);
    values.put(AMOUNT_DUE, amount_due);
    values.put(AMOUNT_PAID, amount_paid);
    values.put(REMARKS, remarks);
    values.put(STATUS, status);

    //inserting row
    long id = db.insert(COLLECTION_TABLE, null, values);
    db.close();// closing database connection

    Log.d(TAG, "COLLECTION ADDED SUCCESSFULLY" + id);

 }

 public void addCustomer(String customer_code, String customer_name, String 

 area) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(CUSTOMER_CODE, customer_code);
    values.put(NAME, customer_name);
    values.put(AREA,area);

    long id = db.insert(CUSTOMER_TABLE, null, values);
    db.close();// closing database connection

    Log.d(TAG, "CUSTOMER ADDED SUCCESSFULLY" + id);
}

public void addCollectionLine(String collection_line_id, String 
transaction_code, String document_no,String amount_due){
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(COLLECTION_LINE_ID, collection_line_id);
    values.put(TRANSACTION_CODE, transaction_code);
    values.put(DOCUMENT_NO, document_no);
    values.put(AMOUNT_DUE, amount_due);


    long id = db.insert(COLLECTION_LINE, null, values);
    db.close();

    Log.d(TAG, "COLLECTION LINE ADDED SUCCESSFULLY" + id);

}


public Customer_Model getcostumer(String customer_code){
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = db.query(CUSTOMER_TABLE, new String[]{ CUSTOMER_CODE, 
NAME,AREA }, CUSTOMER_CODE + "=?",
            new String[] { 
String.valueOf(customer_code)},null,null,null,null);

    if(cursor != null)
        cursor.moveToFirst();

    Customer_Model cm = new 
Customer_Model(cursor.getString(0),cursor.getString(1),cursor.getString(2));
    cursor.close();
    return cm;
}


public List<List_Collection_Model> getAllList(){
    List<List_Collection_Model> list_collection_models = new 
ArrayList<List_Collection_Model>();


    String selectQuery = "SELECT c." + COLLECTION_CODE + "," + " c." +  
CUSTOMER_CODE + "," + " c." + AMOUNT_DUE
            + "," + " a." + NAME + " FROM " + COLLECTION_TABLE + " c" + " 
LEFT JOIN " + CUSTOMER_TABLE + " a "
            + "ON" + " a." + CUSTOMER_CODE + " = " + "c." + CUSTOMER_CODE;


    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c =  db.rawQuery(selectQuery, null);

    if(c.moveToFirst()){

        do{

            List_Collection_Model lc = new List_Collection_Model();

 lc.setCollection_code(c.getString(c.getColumnIndex(COLLECTION_CODE)));

 lc.setCustomer_code(c.getString(c.getColumnIndex(CUSTOMER_CODE)));
            lc.setCustomer_name(c.getString(c.getColumnIndex(NAME)));//              
 lc.setTransaction_no(c.getString(c.getColumnIndex(TRANSACTION_CODE)));
            lc.setAmount_due(c.getString(c.getColumnIndex(AMOUNT_DUE)));
            list_collection_models.add(lc);

            String log = lc.getCollection_code() + lc.getCustomer_code() + 
 lc.getCustomer_name() + lc.getAmount_due();
            Log.d("LOG", log);
        }while (c.moveToNext());

    }

    c.close();
    return list_collection_models;

}

}

Aucun commentaire:

Enregistrer un commentaire