Иностранный не работает для SQLite (возвращая ноль в БД) - PullRequest
0 голосов
/ 09 апреля 2020

Я создал таблицу «пользователи» и «задачи» через android студию на SQLite. Я объявил столбец «userId» в таблице «tasks» как внешний ключ в таблице как его первичный ключ в таблице «users», и я хотел бы соединить две таблицы вместе, чтобы задачи вводились в базу данных для только указанный пользователь c. Однако, когда я запускаю код, он возвращает ноль в таблице задач для столбца идентификатора пользователя. Я не уверен, почему это происходит. Код ниже

// База данных. java

public class Database extends SQLiteOpenHelper {
public Database(Context context) {
    super(context, "rise.db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    //String users = "create table "+TABLE1+"(email text primary key, password text)";
    db.execSQL("create table users(userID integer primary key autoincrement, userName text, email text, password text)");
    db.execSQL("create table tasks(taskId integer primary key autoincrement, userId int, taskName text, taskDate text, taskTag text, startTime text, endTime text, notes text, FOREIGN KEY(userId) REFERENCES users(userID))");
  }


public void onOpen(SQLiteDatabase db) {
    db.execSQL("PRAGMA foreign_keys=ON");
}



//inserting data into tasks table
public boolean insertTasks(String taskName, String taskDate, String taskTag, String startTime, String endTime, String notes) {

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("taskName", taskName);
    //contentValues.put("userId", userId);
    contentValues.put("taskDate", taskDate);
    contentValues.put("taskTag", taskTag);
    //contentValues.put("taskPriority", taskPriority);
    //contentValues.put("taskEnergy", taskEnergy);
    contentValues.put("startTime", startTime);
    contentValues.put("endTime", endTime);
    contentValues.put("notes", notes);
    long inst;
    inst = db.insert("tasks", null, contentValues);
    if (inst == -1) {
        System.out.println("FALSE");
        return false;
    }

    else {
        System.out.println("TRUE");
        return true;
    }
}

// AddNewTask. java

 saveTask.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String entry1 = taskName.getText().toString();
            String entry = userId.getText().toString();
            String entry2 = taskDate.getText().toString();
            String entry3 = taskTag.getSelectedItem().toString();
            String entry4 = startTime.getText().toString();
            String entry5 = endTime.getText().toString();
            String entry6 = notes.getText().toString();

            Boolean extractUserID = db.extractUserID(entry);
            if (extractUserID == true) {
                Boolean insertTasks = db.insertTasks(entry1, entry2, entry3, entry4, entry5, entry6);
                if (insertTasks == true) {
                    Toast.makeText(getApplicationContext(), "Tasks Entered Successfully", Toast.LENGTH_SHORT).show();
                    //openTasksPage();
                } else {
                    Toast.makeText(getApplicationContext(), "Data not inserted", Toast.LENGTH_SHORT).show();
                }
            }
        }
    });

Вот как выглядит база данных: ( пример данных, введенных через android)

Просмотреть изображение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...