我有表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个接收点,然后每个记录创建许多日志时,它只显示我的上一次日志。
问题是为什么我没有为一个收件人获取很多日志?