В настоящее время я работаю над реализацией способа добавления, редактирования, обновления и удаления информации из моей базы данных через интерфейс в моем проекте Android Studio, и в настоящее время я правильно добавляю ее, когда используется таблица без внешнего ключа.
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь добавить данные в свою базу данных с помощью таблицы с внешним ключом.
Метод, которым я бы достиг этого, заключался бы в импутации соответствующей информации, а также идентификатора внешнего ключа.Однако при этом он случайным образом изменит любой идентификатор, который я вставил в идентификатор: 2131165349. Я не уверен, откуда этот идентификатор, и этот идентификатор не существует в таблице, где изначально находится внешний ключ.
Я считаю,моя проблема в коде, который я использовал для создания таблиц со ссылкой на то, как я создал таблицы с первичными ключами.
Ниже приведен мой код для метода onCreate, которому он принадлежит.
public void onCreate(SQLiteDatabase sqLiteDatabase) {
String sqlBook = "CREATE TABLE book(id INTEGER PRIMARY KEY AUTOINCREMENT, bookName VARCHAR, bookAuthor VARCHAR);";
String sqlChapter = "CREATE TABLE chapter(id INTEGER PRIMARY KEY AUTOINCREMENT, chapterName VARCHAR, book_id INTEGER, FOREIGN KEY(book_id) REFERENCES book(id))";
String sqlSection ="CREATE TABLE section(id INTEGER PRIMARY KEY AUTOINCREMENT, sectionName VARCHAR, sectionInfo VARCHAR, book_id INTEGER, chapter_id INTEGER, FOREIGN KEY(book_id) REFERENCES book(id), FOREIGN KEY (chapter_id) REFERENCES chapter(id))";
sqLiteDatabase.execSQL(sqlBook);
sqLiteDatabase.execSQL(sqlChapter);
sqLiteDatabase.execSQL(sqlSection);
AddChapterActivity
public class AddChapterActivity extends AppCompatActivity {
DatabaseHelper db;
Button btnAddChapter, btnViewChapter, btnUpdateChapter, btnDeleteChapter;
EditText textEditChapterName, textEditBookID, textEditChapterID;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_chapter);
db = new DatabaseHelper(this);
btnAddChapter = findViewById(R.id.btnAddChapter);
btnViewChapter = findViewById(R.id.btnViewChapter);
btnUpdateChapter = findViewById(R.id.btnUpdateChapter);
btnDeleteChapter = findViewById(R.id.btnDeleteChapter);
textEditBookID = findViewById(R.id.textEditBookID);
textEditChapterName = findViewById(R.id.textEditChapterName);
textEditChapterID = findViewById(R.id.textEditChapterID);
addChapter();
}
public void addChapter(){
btnAddChapter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String chapterName = textEditChapterName.getText().toString();
int book_id = textEditBookID.getId();
boolean insertChapter = db.addChapter(chapterName, book_id);
if(insertChapter == true) {
Toast.makeText(AddChapterActivity.this, "Chapter added successfully!", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(AddChapterActivity.this, "Something went wrong.", Toast.LENGTH_LONG).show();
}
}
});
}
DatabaseHelper
public boolean addChapter(String chapterName, Integer book_id){
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("chapterName", chapterName);
contentValues.put("book_id", book_id);
long result = db.insert("chapter", null, contentValues);
if(result == -1) {
return false;
}else{
return true;
}