Android - has_many和belongs_to关系只显示has_many

时间:2016-03-14 14:43:22

标签: android sqlite

我有表Recepit和Logs,我创建了第三个表,我在其中保存了Recepit和Logs的ID-s。一个recepit可以有很多日志。

因此,当我创建新的recepit,然后7个日志时,它只显示最后一个。

不知道出了什么问题。

这里是Logs,Recepit和RecepitAndLogs的Create方法。

String CREATE_LOGS_TABLE = "CREATE TABLE " + TABLE_LOGS + " (" +
                KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                KEY_CREATED_AT + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP,"+
                KEY_PLATENUMBER + " TEXT, " +
                KEY_SORT + " TEXT, "+
                KEY_GRADE+ " TEXT, "+
                KEY_DIAMETER + " INTEGER, " +
                KEY_LENGTH + " INTEGER);";
String CREATE_RECEPITS_TABLE = "CREATE TABLE " + TABLE_RECEPIT + " (" +
                RECEPIT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                RECEPIT_PLACE + " TEXT, " + RECEPIT_SHIPPING + " TEXT, " +
                RECEPIT_WAREHOUSE + " TEXT, " + RECEPIT_CARRIER + " TEXT, " +
                RECEPIT_LICENCE + " TEXT, " + RECEPIT_DRIVER + " TEXT, " +
                RECEPIT_CUSTOMER + " TEXT, " + RECEPIT_DEST_WAREHOUSE + " TEXT, " +
                RECEPIT_EMPLOYEE + " TEXT, " +
                RECEPIT_CREATED_AT + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";    
String CREATE_LOGS_BELONGS_TO_RECEPITS_TABLE = "CREATE TABLE " + TABLE_LOGS_BELONGS_TO_RECEPIT + " (" + MRECEIPT_ID + " INTEGER, " +
                MKEY_ID + " INTEGER, FOREIGN KEY("+ MRECEIPT_ID +") REFERENCES "+ TABLE_RECEPIT + "("+ RECEPIT_ID +"), FOREIGN KEY("+ MKEY_ID +") REFERENCES "+ TABLE_LOGS +"("+ KEY_ID +"));";

我通过Intent发送onClick列表项RecepitID

//sending RecepitId via intent form DisplayRecepit activity
mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  Intent intent = new Intent(DisplayRecepit.this, DisplayLogs.class);
  intent.putExtra("recepitID", recepitList.get(position).getId());
  startActivity(intent);
  }
});

//Here I'm recieved "recepitID" and passing it to dbHandler method to get all logs.
final long forwardedId = (long) getIntent().getExtras().get(String.valueOf("recepitID"));
dbHandler = new LogsDBHandler(this);
ArrayList<Logs> logsList = dbHandler.getAllLogs(forwardedId);

这是获取所有日志的dbHandler方法:

// passing the Id here and getting all logs with recepitID
    public ArrayList<Logs> getAllLogs(long id) {
        ArrayList<Logs> logList = new ArrayList<Logs>();
        String selectQuery = "SELECT * FROM " + TABLE_LOGS + " WHERE " + KEY_ID  + " IN " + "(SELECT " + KEY_ID + " FROM " + TABLE_LOGS_BELONGS_TO_RECEPIT + " WHERE " + RECEPIT_ID + " =? )";

        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, new String[]{String.valueOf(id)});

        //going throug all rows and adding it to list
        if (cursor.moveToFirst()) {
            do {
                Logs log = new Logs();
                log.setId(cursor.getLong(0));
                log.setCreatedAt(cursor.getString(1));
                log.setPlate_number(cursor.getString(2));
                log.setSort_id(cursor.getString(3));
                log.setGrade(cursor.getString(4));
                log.setDiameter(cursor.getString(5));
                log.setLength(cursor.getString(6));
                logList.add(log);
            }while (cursor.moveToNext());
        }

        return logList;
    }

当我创建5-6个接收点,然后每个记录创建许多日志时,它只显示我的上一次日志。

问题是为什么我没有为一个收件人获取很多日志?

0 个答案:

没有答案