Я создаю приложение для Android, функция которого состоит в том, чтобы войти и принять участие.Он имеет две таблицы, таблицу COURSES, которая содержит все классы и их детали, и таблицы CLASS, соответствующие каждой строке в COURSES.Каждая таблица CLASS регистрирует посещаемость с помощью COL1: FIRST_NAME, COL: 2LAST_NAME, затем COL3, COL4 и т. Д., Которые создаются динамически при вызове, что обозначает посещаемость для конкретного студента в тот день.открытый класс CoursesDatabase extends SQLiteOpenHelper {частная статическая CoursesDatabase cd = null;
public static final int DATABASE_VERSION = 2;
public static final String DATABASE_NAME = "course_manager.db";
public static final String COURSES_TABLE_NAME = "COURSES";
public static final String KEY_ID = "ID"; //column index 0
public static final String KEY_NAME= "COURSE_NAME"; //column index 1
public static final String KEY_CODE = "COURSE_CODE"; //column index 2
public static final String KEY_HOUR = "COURSE_HOUR"; //column index 3
public static final String KEY_MINUTE = "COURSE_MINUTE"; //column index 4
public static final String KEY_INSTRUCTOR = "COURSE_INSTRUCTOR"; //column index 5
public static final String IS_ON = "IS_ON"; //column index 6
public static final String LATEST_TIME = "LATEST_TIME"; //column index 7
private CoursesDatabase(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
deleteAll();
addCourse(new Course("SE_354", "Software_Engineering", "12345", 10, 30, "John Doe 1"));
addCourse(new Course("CE_237", "CompSci_2", "13346", 11, 0, "john doe2"));
}
public static CoursesDatabase getInstance(Context context){
if (cd == null){
cd = new CoursesDatabase(context);
}
return cd;
}
@Override
public void onCreate(SQLiteDatabase cd) {
final String SQL_CREATE_USER_TABLE = "CREATE TABLE " + COURSES_TABLE_NAME + "(" +
KEY_ID + " TEXT NOT NULL, " + // column 0
KEY_NAME + " TEXT NOT NULL, " + // column 1
KEY_CODE + " TEXT NOT NULL, " + // column 2
KEY_HOUR + " INT, " + // column 3
KEY_MINUTE + " INT, " + // column 4
KEY_INSTRUCTOR + " TEXT," + // column 5
IS_ON + "INT DEFAULT 0," + // column 6
LATEST_TIME + "String);"; // column 7
cd.execSQL(SQL_CREATE_USER_TABLE);
}
//Creates a table to log attendance for each class
String KEY_STUDENT_FIRST_NAME = "First_Name";
String KEY_STUDENT_LAST_NAME = "Last_Name";
public void newClassTable(Course course){
SQLiteDatabase cd = this.getWritableDatabase();
String CLASS_TABLE_NAME = course.getId() + "_" + course.getName() + "_" + course.getHour() + course.getMinute();//needs refactoring
final String SQL_CREATE_CLASS_TABLE = "CREATE TABLE IF NOT EXISTS " + CLASS_TABLE_NAME + "(" +
KEY_STUDENT_FIRST_NAME + " STRING, " + // column 0
KEY_STUDENT_LAST_NAME + " STRING);"; // column 1
cd.execSQL(SQL_CREATE_CLASS_TABLE);
}
public boolean addSession(Course course)
{
SQLiteDatabase cd = this.getWritableDatabase();
//current date in numerical format, e.g. 08/12/18
String CLASS_TABLE_NAME = course.getId() + "_" + course.getName() + "_" + course.getHour() + course.getMinute();//needs refactoring
cd.execSQL("ALTER TABLE " + CLASS_TABLE_NAME + " ADD COLUMN " + "'" + course.getLatestTime() + "'" + " INT;");
return true;
}
//****NEEDS TESTING ****
//takes the attendance of a student in course table. If the student does not exist in the course table, the student is then added.
public boolean attendStudentInCourse(User student, Course course) {
SQLiteDatabase cd = this.getWritableDatabase();
String CLASS_TABLE_NAME = course.getId() + "_" + course.getName() + "_" + course.getHour() + course.getMinute();//needs refactoring
//if professor has not turned on the course yet exit
if (!course.isAvailable()) {
return false;
}
//if student has never attended course before, add their row
Cursor cursor = cd.rawQuery("SELECT * FROM " + CLASS_TABLE_NAME + " WHERE First_Name = ? AND Last_Name = ? ",
new String[]{student.getFirst_name(),student.getLast_name()});
if (!cursor.moveToNext())
{
ContentValues studentvalues = new ContentValues();
studentvalues.put(KEY_STUDENT_FIRST_NAME, student.getFirst_name());
studentvalues.put(KEY_STUDENT_LAST_NAME, student.getLast_name());
cd.insert(CLASS_TABLE_NAME, null, studentvalues);
}
//otherwise, just tick their attendance on the current date
ContentValues datevalue = new ContentValues();
datevalue.put("'" + course.getLatestTime() + "'", 1);
cd.update(CLASS_TABLE_NAME, datevalue, KEY_STUDENT_FIRST_NAME+" = ? AND " + KEY_STUDENT_LAST_NAME+" = ?", new String [] {student.getFirst_name(), student.getLast_name()});
return true;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + COURSES_TABLE_NAME);
onCreate(db);
}
Мой вопрос заключается в том, как преобразовать конкретную таблицу CLASS в файл Excel (с сохранением форматирования столбцов / строк), который я затем мог бы отправитькак электронная почта на адрес электронной почты профессора?Общая критика также полезна, и я понимаю, что это, вероятно, плохой способ построения таблиц, но это мое первое знакомство с Android Studio и базой данных.Эта реализация имела смысл для меня, и я не слишком беспокоюсь об эффективности в данный момент.
Редактировать: обновленный код с рабочей версией.