У меня возникли проблемы с моей базой данных на Android.Добавить значение FK в существующую запись таблицы
Есть две таблицы. Первый TABLE_LISTELEMENT
обрабатывает все данные, которые должен иметь один элемент.
public static final String SQL_CREATE_LE =
"create table " + TABLE_LISTELEMENT + "(" +
COL_LEID + " integer primary key autoincrement, " +
COL_PRODUCT + " text, " +
COL_LABEL + " text, " +
COL_SERIAL + " text, " +
COL_MAC + " text, " +
COL_DAAID + " text, " +
COL_BILL + " text, " +
COL_FK_RID + " REFERENCES room(rid)" + ")";
Ive добавил внешний ключ COL_FK_RID
ссылаться на мою вторую таблице (TABLE_ROOMS
)
public static final String SQL_CREATE_R =
"create table " + TABLE_ROOM + "(" +
COL_RID + " integer primary key autoincrement, " +
COL_RNAME + " text" + ")";
Теперь Ive получил эти две таблиц, но я не уверен, как добавить FK к моей первой таблице.
Сначала создаю элементы TABLE_LISTELEMENTS
и показываю их в ListView
. Теперь я хочу взять все записи ListView
и добавить комнату. Поэтому я выбираю все записи из TABLE_ELEMENTS
с:
public boolean insertRoomNr(String room){
SQLiteDatabase db = this.getWritableDatabase();
Cursor dbCursor;
ContentValues contentValues = new ContentValues();
contentValues.put("roomname", room);
db.insert(TABLE_ROOM, null, contentValues);
String RaumId ="";
RaumId = db.rawQuery("SELECT rid FROM room WHERE "+ COL_RNAME + " = ?",new String[]{"null"}).toString();
ContentValues contentValues2 = new ContentValues();
contentValues.put("fkrid", RaumId);
db.update(TABLE_LISTELEMENT, contentValues2 , " WHERE fkrid IS null", null);
return true;
}
Но как теперь я могу добавить номер к моему TABLE_ROOMS
и связать его со всеми записями которым у меня есть selectet. (Ive получил EditText
и Button
, которые я использую для ввода номера комнаты).
Я надеюсь, что вы поймете мою проблему.
Чтобы добавить строку в таблицу, используйте [вставку()] (http://developer.android.com/reference/android/database /sqlite/SQLiteDatabase.html#insertOrThrow(java.lang.String,%20java.lang.String,%20android.content.ContentValues)). Чтобы изменить значение столбца в одной или нескольких строках, используйте [update()] (http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#update (java.lang.String,% 20android .content.ContentValues,% 20java.lang.String,% 20java.lang.String [])). –
Я изменил метод 'insertRoomNr'. Но он все еще не работает. Я не уверен, как работает 'update'. 1. Я беру комнату String и помещаю ее в свой 'TABLE_ROOM'. Теперь у меня есть номер и номер ID в моем столе 2. Теперь я хочу проверить номер, который я написал в TABLE, чтобы добавить его в мой 'TABLE_LISTEELEMENT' Но как я могу это выполнить? Мой способ сохранить идентификатор в строке, похоже, не работает. – Rastaman