Я создал таблицу «пользователи» и «задачи» через 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)
Просмотреть изображение здесь