Member 13903083 Ответов: 1

Кто-нибудь может мне помочь, пожалуйста, я застрял здесь с прошлой недели ?


below is my SqliteHelper class and I want to create a table and initialize it with two columns first ID and second names like a real attendance register and I want to add columns of attendanceStatus on button click in java file like everyday I want to save attendance in that table(add a column per day) please give me some hint how to achieve this else i'll do on my own!


Что я уже пробовал:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.text.DateFormat;
import java.util.Calendar;

public class SqliteHelper extends SQLiteOpenHelper {

    Calendar calendar;

    public static final String DATABASE_NAME = "attendanceDatabase.db";
    public static final String TABLE_NAME = "studentAttendance";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "NAMES";
    public static String COL_3;
    public static int DATABASE_VERSION = 1;

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

    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        final String CREATE_TABLE =
                " CREATE TABLE " + TABLE_NAME + "("
                        + COL_1 + " INTEGER PRIMARY KEY AUTOINCREMENT ,"
                        + COL_2 + " TEXT "
                        + ")";

        db.execSQL(CREATE_TABLE);
    }

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

        calendar = Calendar.getInstance();
        COL_3 = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

        db.execSQL(" ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + COL_3 + " TEXT ");
        onCreate(db);
    }

    /*public Boolean insertAttendance(){

    }*/
}
above is my SqliteHelper class and I want to

OriginalGriff

- пожалуйста, дайте мне какой-нибудь намек, как достичь этого, иначе я сделаю это сам!"

Тогда почему ты не сделал этого сам, раз уж "застрял здесь с прошлой недели"? Что вас останавливает (кроме того, что это плохая идея и довольно опасная)?

Member 13903083

я не в состоянии понять подход, я даже не знаю, возможно это или нет ! почему это опасный подход? предложи мне другой способ сделать то же самое! пожалуйста

OriginalGriff

Google "SQL Injection" и "Bobby Tables" по причинам, почему конкатенация строк-плохая идея.

Member 13903083

спасибо, у меня появилась новая идея !

David Crow

"...и я хочу добавить столбцы attendanceStatus при нажатии кнопки в java-файле, как каждый день я хочу сохранить посещаемость в этой таблице(добавить столбец в день)"

Возможно, вы имели в виду добавляйте по одной строке в день?

Вы создали экземпляр SqliteHelper Где находится ваш код для фактического добавления строк?

Member 13903083

нет, я хочу добавить новую колонку в каждую сессию посещаемости !

David Crow

Это звучит как действительно плохой дизайн. Подумайте о добавлении новой таблицы с внешним ключом, который связывается обратно с COL_1 от TABLE_NAME Затем просто добавляйте новую строку в новую таблицу каждый день .

1 Ответов

Рейтинг:
5

Gerry Schmitz

Если вам нужна колонка для каждого "дня посещаемости", вам придется планировать заранее и вычислять, сколько вам нужно; добавлять их позже, по одному, нецелесообразно.

Вы можете хранить все показатели посещаемости в виде "строки" в одном столбце в качестве альтернативы; например, "YYYYNYYYYN...." или "Y,Y,Y,Y,N,.."


Member 13903083

таким образом, один столбец не может быть добавлен для каждой сессии посещаемости ? :(

David Crow

Да, технически, но это плохой дизайн и кошмар обслуживания.