Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的外键没有插入数据库,知道我做错了什么吗?_Java_Android_Sqlite_Foreign Keys - Fatal编程技术网

Java 我的外键没有插入数据库,知道我做错了什么吗?

Java 我的外键没有插入数据库,知道我做错了什么吗?,java,android,sqlite,foreign-keys,Java,Android,Sqlite,Foreign Keys,当用户单击表单时,将在我的数据库中创建一行。其他一切都正常,但外键值未插入 我创建以下表格: db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" + "_id integer primary key autoincrement, " + TermDbSchema.CourseTable.Cols.UUID + ", " +

当用户单击表单时,将在我的数据库中创建一行。其他一切都正常,但外键值未插入

我创建以下表格:

db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.CourseTable.Cols.UUID + ", " +
                TermDbSchema.CourseTable.Cols.TITLE + ", " +
                TermDbSchema.CourseTable.Cols.START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.END_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE + ", " +

                TermDbSchema.CourseTable.Cols.COURSE_STATUS + ", " +
                TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_NAME + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_PHONE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_EMAIL + ", " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.TermTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
        db.execSQL("create table " + TermDbSchema.AssessmentTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.AssessmentTable.Cols.UUID + ", " +
                TermDbSchema.AssessmentTable.Cols.TITLE + ", " +
                TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE + ", " +
                TermDbSchema.AssessmentTable.Cols.DUE_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.GOAL_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.CourseTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
下面是我制作的一个游标包装器:老实说,问题可能在这里我不确定游标包装器是如何工作的我怀疑我在这里做错了什么:


public class AssessmentCursorWrapper extends CursorWrapper {
    public AssessmentCursorWrapper(Cursor cursor) {
        super(cursor);
    }
    public Assessment getAssessment() {
        String uuidString = getString(getColumnIndex(AssessmentTable.Cols.UUID));
        String title = getString(getColumnIndex(AssessmentTable.Cols.TITLE));
        String assesstype = getString(getColumnIndex(AssessmentTable.Cols.ASSESS_TYPE));
        long duedate = getLong(getColumnIndex(AssessmentTable.Cols.DUE_DATE));
        long goaldate = getLong(getColumnIndex(AssessmentTable.Cols.GOAL_DATE));
//this is the foreign key 
        int course_reference = getInt(getColumnIndex(AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE));

        Assessment assessment = new Assessment(UUID.fromString(uuidString));
        assessment.setTitle(title);
        assessment.setAssessType(assesstype);
        assessment.setDueDate(new Date(duedate));
        assessment.setGoalDate(new Date(goaldate));

        assessment.setSelectAssessforCourse(course_reference);
        return assessment;
    }
}
我创建了一个评估类,让用户单击按钮插入外键值1,以测试功能



public class Assessment {

    private int selectAssessforCourse;
    private UUID mID;
    private String mTitle;
    private String mAssessType;
    private int selectAssessforCourse;
public int getSelectAssessforCourse() {
        return selectAssessforCourse;
    }

    public void setSelectAssessforCourse(int selectAssessforCourse) {
        this.selectAssessforCourse = selectAssessforCourse;
    }
}
当用户单击某个按钮时,我使用SetSelectAssessorCourse 来测试它是否有效。我只需将数字1插入到 测试它,id不会被插入



mSaveAssessBtn.setOnClickListener(new View.OnClickListener() {
            @Override
                public void onClick(View v) {
                mAssessment.setTitle(mTitleField.getText().toString());
                mAssessment.setSelectAssessforCourse(1); // I insert 1 to see if the foreign key value of 1 gets inserted
                Intent myIntent = new Intent(getActivity(), AssessmentListActivity.class);
                startActivity(myIntent);
            }
        });

我不认为您需要CursorWrapper,CursorWrapper的目的是覆盖诸如getCount之类的游标方法

我相信您只需要一个光标,例如,您可能只需要按照以下内容获得所有评估,以及基于每个评估的课程和学期:-

这相当于SQL:-

SELECT * FROM assessments 
JOIN courses ON course_reference = courses._id 
JOIN terms ON term_reference = terms._id
注意:需要在_id列前加前缀,否则_id不明确,另外,不要使用getColumnIndex\u id,而是使用引用_id列的列来获取适当的值。我相信getColumnIndex将始终返回最后一个匹配值。 下面是一个基于您的定义的工作示例。示例中使用的数据库帮助器类是:-

public class DBHelper extends SQLiteOpenHelper {

    public static final String DBNAME = "mydb";
    public static final int DBVERSION = 1;


    public DBHelper(Context context) {
        super(context, DBNAME, null, DBVERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TermDbSchema.TermTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.TermTable.Cols.UUID + ", " +
                TermDbSchema.TermTable.Cols.TITLE + ", " +
                TermDbSchema.TermTable.Cols.START_DATE + ", " +
                TermDbSchema.TermTable.Cols.END_DATE +
                ")"
        );
        db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.CourseTable.Cols.UUID + ", " +
                TermDbSchema.CourseTable.Cols.TITLE + ", " +
                TermDbSchema.CourseTable.Cols.START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.END_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE + ", " +

                TermDbSchema.CourseTable.Cols.COURSE_STATUS + ", " +
                TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_NAME + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_PHONE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_EMAIL + ", " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " INTEGER REFERENCES " +
                TermDbSchema.TermTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
        db.execSQL("create table " + TermDbSchema.AssessmentTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.AssessmentTable.Cols.UUID + ", " +
                TermDbSchema.AssessmentTable.Cols.TITLE + ", " +
                TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE + ", " +
                TermDbSchema.AssessmentTable.Cols.DUE_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.GOAL_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.CourseTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
    }

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

    }

    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.setForeignKeyConstraintsEnabled(true);

    }

    public long addTerm(String title, String start_date, String end_date) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.TermTable.Cols.TITLE,title);
        cv.put(TermDbSchema.TermTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.TermTable.Cols.END_DATE,end_date);
        return this.getWritableDatabase().insert(TermDbSchema.TermTable.NAME,null,cv);
    }

    public long addCourse(
            String title,
            String start_date,
            String end_date,
            String chosen_start_date,
            String chosen_end_date,
            String status, String note,
            String mentor_name,
            String mentor_phone,
            String mentor_email,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.CourseTable.Cols.TITLE,title);
        cv.put(TermDbSchema.CourseTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.CourseTable.Cols.END_DATE,end_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE,chosen_start_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE,chosen_end_date);
        cv.put(TermDbSchema.CourseTable.Cols.COURSE_STATUS,status);
        cv.put(TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE,note);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_NAME,mentor_name);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_PHONE,mentor_phone);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_EMAIL,mentor_email);
        cv.put(TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.CourseTable.NAME,null,cv);
    }

    public long addAssessment(
            String title,
            String assessType,
            String duedate,
            String goaldate,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.AssessmentTable.Cols.TITLE, title);
        cv.put(TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE,assessType);
        cv.put(TermDbSchema.AssessmentTable.Cols.DUE_DATE,duedate);
        cv.put(TermDbSchema.AssessmentTable.Cols.GOAL_DATE,goaldate);
        cv.put(TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.AssessmentTable.NAME,null,cv);
    }

    public Cursor getAllCoursesWithTermDetails() {
        String tables = TermDbSchema.CourseTable.NAME +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }

    public Cursor getAllAssessmentsWithCourseAndTermdetails() {
        String tables = TermDbSchema.AssessmentTable.NAME +
                " JOIN " + TermDbSchema.CourseTable.NAME + " ON " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " = " +
                TermDbSchema.CourseTable.NAME + "." + "_id" +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }
}

另外,我没有费心设置UUID的

您如何插入评估表编辑您的问题以包括插入代码以及如何获得参考值?您是否注意到定义外键约束不会自动建立关系。也就是说,在添加课程时,您仍然需要确定相关术语。一个常见的误解是,它会这样做。?根据前面的问题,我编辑了我的帖子,展示了如何插入外键。
SELECT * FROM assessments 
JOIN courses ON course_reference = courses._id 
JOIN terms ON term_reference = terms._id
public class DBHelper extends SQLiteOpenHelper {

    public static final String DBNAME = "mydb";
    public static final int DBVERSION = 1;


    public DBHelper(Context context) {
        super(context, DBNAME, null, DBVERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TermDbSchema.TermTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.TermTable.Cols.UUID + ", " +
                TermDbSchema.TermTable.Cols.TITLE + ", " +
                TermDbSchema.TermTable.Cols.START_DATE + ", " +
                TermDbSchema.TermTable.Cols.END_DATE +
                ")"
        );
        db.execSQL("create table " + TermDbSchema.CourseTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.CourseTable.Cols.UUID + ", " +
                TermDbSchema.CourseTable.Cols.TITLE + ", " +
                TermDbSchema.CourseTable.Cols.START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.END_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE + ", " +
                TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE + ", " +

                TermDbSchema.CourseTable.Cols.COURSE_STATUS + ", " +
                TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_NAME + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_PHONE + ", " +
                TermDbSchema.CourseTable.Cols.MENTOR_EMAIL + ", " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " INTEGER REFERENCES " +
                TermDbSchema.TermTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
        db.execSQL("create table " + TermDbSchema.AssessmentTable.NAME + "(" +
                "_id integer primary key autoincrement, " +
                TermDbSchema.AssessmentTable.Cols.UUID + ", " +
                TermDbSchema.AssessmentTable.Cols.TITLE + ", " +
                TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE + ", " +
                TermDbSchema.AssessmentTable.Cols.DUE_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.GOAL_DATE + ", " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " INTEGER REFERENCES " + TermDbSchema.CourseTable.NAME + "(_id) ON DELETE CASCADE ON UPDATE CASCADE" + //<<<<<<<<<< ADDED
                ")"
        );
    }

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

    }

    @Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.setForeignKeyConstraintsEnabled(true);

    }

    public long addTerm(String title, String start_date, String end_date) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.TermTable.Cols.TITLE,title);
        cv.put(TermDbSchema.TermTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.TermTable.Cols.END_DATE,end_date);
        return this.getWritableDatabase().insert(TermDbSchema.TermTable.NAME,null,cv);
    }

    public long addCourse(
            String title,
            String start_date,
            String end_date,
            String chosen_start_date,
            String chosen_end_date,
            String status, String note,
            String mentor_name,
            String mentor_phone,
            String mentor_email,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.CourseTable.Cols.TITLE,title);
        cv.put(TermDbSchema.CourseTable.Cols.START_DATE,start_date);
        cv.put(TermDbSchema.CourseTable.Cols.END_DATE,end_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_START_DATE,chosen_start_date);
        cv.put(TermDbSchema.CourseTable.Cols.CHOSEN_END_DATE,chosen_end_date);
        cv.put(TermDbSchema.CourseTable.Cols.COURSE_STATUS,status);
        cv.put(TermDbSchema.CourseTable.Cols.OPTIONAL_NOTE,note);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_NAME,mentor_name);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_PHONE,mentor_phone);
        cv.put(TermDbSchema.CourseTable.Cols.MENTOR_EMAIL,mentor_email);
        cv.put(TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.CourseTable.NAME,null,cv);
    }

    public long addAssessment(
            String title,
            String assessType,
            String duedate,
            String goaldate,
            long course_reference) {
        ContentValues cv = new ContentValues();
        cv.put(TermDbSchema.AssessmentTable.Cols.TITLE, title);
        cv.put(TermDbSchema.AssessmentTable.Cols.ASSESS_TYPE,assessType);
        cv.put(TermDbSchema.AssessmentTable.Cols.DUE_DATE,duedate);
        cv.put(TermDbSchema.AssessmentTable.Cols.GOAL_DATE,goaldate);
        cv.put(TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE,course_reference);
        return this.getWritableDatabase().insert(TermDbSchema.AssessmentTable.NAME,null,cv);
    }

    public Cursor getAllCoursesWithTermDetails() {
        String tables = TermDbSchema.CourseTable.NAME +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }

    public Cursor getAllAssessmentsWithCourseAndTermdetails() {
        String tables = TermDbSchema.AssessmentTable.NAME +
                " JOIN " + TermDbSchema.CourseTable.NAME + " ON " +
                TermDbSchema.AssessmentTable.Cols.COL_ASSESS_COURSE_REFERENCE + " = " +
                TermDbSchema.CourseTable.NAME + "." + "_id" +
                " JOIN " + TermDbSchema.TermTable.NAME + " ON " +
                TermDbSchema.CourseTable.Cols.COL_COURSE_TERM_REFERENCE + " = " +
                TermDbSchema.TermTable.NAME + "." + "_id";
        return this.getWritableDatabase().query(tables,null,null,null,null,null,null);
    }
}
public class MainActivity extends AppCompatActivity {

    DBHelper mDBHlpr;
    ArrayList<Long> terms = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mDBHlpr = new DBHelper(this);
        addSometestingData();
        Cursor csr = mDBHlpr.getAllCoursesWithTermDetails();
        DatabaseUtils.dumpCursor(csr);
        csr = mDBHlpr.getAllAssessmentsWithCourseAndTermdetails();
        DatabaseUtils.dumpCursor(csr);
    }

    private void addSometestingData() {
        if (DatabaseUtils.queryNumEntries(mDBHlpr.getWritableDatabase(), TermDbSchema.TermTable.NAME) < 1) {
            addSomeTerms();
            addSomeCourses();
            addSomeAssessments();
        }
    }

    private void addSomeTerms() {
        terms.add(mDBHlpr.addTerm("TERM001","2019-01-01","2019-0331"));
        terms.add(mDBHlpr.addTerm("TERM002","2019-04-01","2019-06-30"));
        terms.add(mDBHlpr.addTerm("TERM003","2019-07-01","2019-09-30"));
        terms.add(mDBHlpr.addTerm("TERM004","2019-10-01","2019-12-31"));
    }

    private void addSomeCourses() {
        mDBHlpr.addCourse(
                "Math01",
                "2019-01-01","2019-03-14","2019-01-03","2019-03-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(0));
        mDBHlpr.addCourse(
                "Math02",
                "2019-04-01","2019-06-14","2019-04-03","2019-06-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(1));
        mDBHlpr.addCourse(
                "Math03",
                "2019-07-01","2019-09-14","2019-07-03","2019-09-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(2));
        mDBHlpr.addCourse(
                "Math01",
                "2019-10-01","2019-12-14","2019-10-03","2019-12-07",
                "OK","blah",
                "Fred","0000000000","fred@email.com",
                terms.get(3));
    }

    private void  addSomeAssessments() {
        mDBHlpr.addAssessment("MATH02-A01","?","2019-01-31","2019-01-24",1);
        mDBHlpr.addAssessment("MATH01-A02","?","2019-02-28","2019-02-21",1);
        mDBHlpr.addAssessment("MATH01-A03","?","2019-03-31","2019-03-24",1);
        mDBHlpr.addAssessment("MATH02-A01","?","2019-04-30","2019-04-23",2);
        // and so on
    }
}
2019-05-13 11:22:06.344  I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@76cd9ae
2019-05-13 11:22:06.345  I/System.out: 0 {
2019-05-13 11:22:06.345  I/System.out:    _id=1
2019-05-13 11:22:06.345  I/System.out:    uuid=null
2019-05-13 11:22:06.345  I/System.out:    title=Math01
2019-05-13 11:22:06.345  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.345  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.345  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.346  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.346  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.346  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.346  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.346  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.346  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.346  I/System.out:    term_reference=1
2019-05-13 11:22:06.346  I/System.out:    _id=1
2019-05-13 11:22:06.346  I/System.out:    uuid=null
2019-05-13 11:22:06.347  I/System.out:    title=TERM001
2019-05-13 11:22:06.347  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.347  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.347  I/System.out: }
2019-05-13 11:22:06.347  I/System.out: 1 {
2019-05-13 11:22:06.347  I/System.out:    _id=2
2019-05-13 11:22:06.347  I/System.out:    uuid=null
2019-05-13 11:22:06.347  I/System.out:    title=Math02
2019-05-13 11:22:06.347  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.347  I/System.out:    enddate=2019-06-14
2019-05-13 11:22:06.347  I/System.out:    chosenstartdate=2019-04-03
2019-05-13 11:22:06.347  I/System.out:    chosenenddate=2019-06-07
2019-05-13 11:22:06.347  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.347  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.348  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.348  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.348  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.348  I/System.out:    term_reference=2
2019-05-13 11:22:06.348  I/System.out:    _id=2
2019-05-13 11:22:06.348  I/System.out:    uuid=null
2019-05-13 11:22:06.348  I/System.out:    title=TERM002
2019-05-13 11:22:06.348  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.349  I/System.out:    enddate=2019-06-30
2019-05-13 11:22:06.349  I/System.out: }
2019-05-13 11:22:06.349  I/System.out: 2 {
2019-05-13 11:22:06.349  I/System.out:    _id=3
2019-05-13 11:22:06.349  I/System.out:    uuid=null
2019-05-13 11:22:06.349  I/System.out:    title=Math03
2019-05-13 11:22:06.349  I/System.out:    startdate=2019-07-01
2019-05-13 11:22:06.349  I/System.out:    enddate=2019-09-14
2019-05-13 11:22:06.349  I/System.out:    chosenstartdate=2019-07-03
2019-05-13 11:22:06.350  I/System.out:    chosenenddate=2019-09-07
2019-05-13 11:22:06.350  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.350  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.350  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.350  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.350  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.350  I/System.out:    term_reference=3
2019-05-13 11:22:06.350  I/System.out:    _id=3
2019-05-13 11:22:06.350  I/System.out:    uuid=null
2019-05-13 11:22:06.350  I/System.out:    title=TERM003
2019-05-13 11:22:06.350  I/System.out:    startdate=2019-07-01
2019-05-13 11:22:06.350  I/System.out:    enddate=2019-09-30
2019-05-13 11:22:06.350  I/System.out: }
2019-05-13 11:22:06.350  I/System.out: 3 {
2019-05-13 11:22:06.350  I/System.out:    _id=4
2019-05-13 11:22:06.350  I/System.out:    uuid=null
2019-05-13 11:22:06.350  I/System.out:    title=Math01
2019-05-13 11:22:06.350  I/System.out:    startdate=2019-10-01
2019-05-13 11:22:06.350  I/System.out:    enddate=2019-12-14
2019-05-13 11:22:06.351  I/System.out:    chosenstartdate=2019-10-03
2019-05-13 11:22:06.351  I/System.out:    chosenenddate=2019-12-07
2019-05-13 11:22:06.351  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.351  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.351  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.351  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.351  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.351  I/System.out:    term_reference=4
2019-05-13 11:22:06.351  I/System.out:    _id=4
2019-05-13 11:22:06.351  I/System.out:    uuid=null
2019-05-13 11:22:06.351  I/System.out:    title=TERM004
2019-05-13 11:22:06.351  I/System.out:    startdate=2019-10-01
2019-05-13 11:22:06.351  I/System.out:    enddate=2019-12-31
2019-05-13 11:22:06.351  I/System.out: }
2019-05-13 11:22:06.351  I/System.out: <<<<<
2019-05-13 11:22:06.352  I/System.out: >>>>> Dumping cursor android.database.sqlite.SQLiteCursor@e3fe34f
2019-05-13 11:22:06.353  I/System.out: 0 {
2019-05-13 11:22:06.353  I/System.out:    _id=1
2019-05-13 11:22:06.353  I/System.out:    uuid=null
2019-05-13 11:22:06.353  I/System.out:    title=MATH02-A01
2019-05-13 11:22:06.353  I/System.out:    assesstype=?
2019-05-13 11:22:06.353  I/System.out:    duedate=2019-01-31
2019-05-13 11:22:06.353  I/System.out:    goaldate=2019-01-24
2019-05-13 11:22:06.353  I/System.out:    course_reference=1
2019-05-13 11:22:06.353  I/System.out:    _id=1
2019-05-13 11:22:06.353  I/System.out:    uuid=null
2019-05-13 11:22:06.353  I/System.out:    title=Math01
2019-05-13 11:22:06.353  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.353  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.353  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.354  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.354  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.354  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.354  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.354  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.354  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.354  I/System.out:    term_reference=1
2019-05-13 11:22:06.354  I/System.out:    _id=1
2019-05-13 11:22:06.354  I/System.out:    uuid=null
2019-05-13 11:22:06.354  I/System.out:    title=TERM001
2019-05-13 11:22:06.354  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.354  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.354  I/System.out: }
2019-05-13 11:22:06.354  I/System.out: 1 {
2019-05-13 11:22:06.354  I/System.out:    _id=2
2019-05-13 11:22:06.354  I/System.out:    uuid=null
2019-05-13 11:22:06.354  I/System.out:    title=MATH01-A02
2019-05-13 11:22:06.354  I/System.out:    assesstype=?
2019-05-13 11:22:06.354  I/System.out:    duedate=2019-02-28
2019-05-13 11:22:06.354  I/System.out:    goaldate=2019-02-21
2019-05-13 11:22:06.355  I/System.out:    course_reference=1
2019-05-13 11:22:06.355  I/System.out:    _id=1
2019-05-13 11:22:06.355  I/System.out:    uuid=null
2019-05-13 11:22:06.355  I/System.out:    title=Math01
2019-05-13 11:22:06.355  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.355  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.355  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.355  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.355  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.355  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.355  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.355  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.355  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.355  I/System.out:    term_reference=1
2019-05-13 11:22:06.355  I/System.out:    _id=1
2019-05-13 11:22:06.355  I/System.out:    uuid=null
2019-05-13 11:22:06.355  I/System.out:    title=TERM001
2019-05-13 11:22:06.355  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.355  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.355  I/System.out: }
2019-05-13 11:22:06.355  I/System.out: 2 {
2019-05-13 11:22:06.356  I/System.out:    _id=3
2019-05-13 11:22:06.356  I/System.out:    uuid=null
2019-05-13 11:22:06.356  I/System.out:    title=MATH01-A03
2019-05-13 11:22:06.356  I/System.out:    assesstype=?
2019-05-13 11:22:06.356  I/System.out:    duedate=2019-03-31
2019-05-13 11:22:06.356  I/System.out:    goaldate=2019-03-24
2019-05-13 11:22:06.356  I/System.out:    course_reference=1
2019-05-13 11:22:06.356  I/System.out:    _id=1
2019-05-13 11:22:06.356  I/System.out:    uuid=null
2019-05-13 11:22:06.356  I/System.out:    title=Math01
2019-05-13 11:22:06.356  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.356  I/System.out:    enddate=2019-03-14
2019-05-13 11:22:06.356  I/System.out:    chosenstartdate=2019-01-03
2019-05-13 11:22:06.356  I/System.out:    chosenenddate=2019-03-07
2019-05-13 11:22:06.357  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.357  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.357  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.357  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.357  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.357  I/System.out:    term_reference=1
2019-05-13 11:22:06.357  I/System.out:    _id=1
2019-05-13 11:22:06.357  I/System.out:    uuid=null
2019-05-13 11:22:06.357  I/System.out:    title=TERM001
2019-05-13 11:22:06.357  I/System.out:    startdate=2019-01-01
2019-05-13 11:22:06.357  I/System.out:    enddate=2019-0331
2019-05-13 11:22:06.357  I/System.out: }
2019-05-13 11:22:06.358  I/System.out: 3 {
2019-05-13 11:22:06.358  I/System.out:    _id=4
2019-05-13 11:22:06.358  I/System.out:    uuid=null
2019-05-13 11:22:06.358  I/System.out:    title=MATH02-A01
2019-05-13 11:22:06.358  I/System.out:    assesstype=?
2019-05-13 11:22:06.358  I/System.out:    duedate=2019-04-30
2019-05-13 11:22:06.358  I/System.out:    goaldate=2019-04-23
2019-05-13 11:22:06.358  I/System.out:    course_reference=2
2019-05-13 11:22:06.358  I/System.out:    _id=2
2019-05-13 11:22:06.358  I/System.out:    uuid=null
2019-05-13 11:22:06.358  I/System.out:    title=Math02
2019-05-13 11:22:06.358  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.358  I/System.out:    enddate=2019-06-14
2019-05-13 11:22:06.358  I/System.out:    chosenstartdate=2019-04-03
2019-05-13 11:22:06.358  I/System.out:    chosenenddate=2019-06-07
2019-05-13 11:22:06.358  I/System.out:    coursestatus=OK
2019-05-13 11:22:06.358  I/System.out:    optionalnote=blah
2019-05-13 11:22:06.359  I/System.out:    mentorname=Fred
2019-05-13 11:22:06.359  I/System.out:    mentorphone=0000000000
2019-05-13 11:22:06.359  I/System.out:    mentoremail=fred@email.com
2019-05-13 11:22:06.359  I/System.out:    term_reference=2
2019-05-13 11:22:06.359  I/System.out:    _id=2
2019-05-13 11:22:06.359  I/System.out:    uuid=null
2019-05-13 11:22:06.359  I/System.out:    title=TERM002
2019-05-13 11:22:06.359  I/System.out:    startdate=2019-04-01
2019-05-13 11:22:06.359  I/System.out:    enddate=2019-06-30
2019-05-13 11:22:06.359  I/System.out: }
2019-05-13 11:22:06.359  I/System.out: <<<<<