У меня есть две таблицы, как USER_TABLE, где у меня есть все пользовательские детали как имя пользователя, Firstname и т.д., и так же у меня есть другая таблица с именем RESUME_TABLE
, где я есть цель, степень, университет и т. д. Столбцы, общие для обоих, - KEY_USERID
(создаются динамически), и я использую этот идентификатор в соответствии с двумя таблицами.SQLite Database Error (Глюк в мост между двумя столами)
Вопрос:
зарегистрировать пользователя и его детали получает хранится в USER_TABLE и говорят, что его KEY_USERID
автоматически сгенерированный (первичный ключ) является 1, а затем я составить резюме для него в RESUME_TABLE
, используя тот же KEY_USERID 1
. Я передаю KEY_USERID
, полученный из первой таблицы, в качестве аргумента при вставке и извлечении содержимого резюме из RESUME_TABLE
.
Скажем, я сделать это снова для другого пользователя, тем самым генерируя KEY_USERID 2
но я заполнить только USER_TABLE
и RESUME_TABLE ПУСТ.
Когда я повторить это снова заполняющие обе таблицы, то RESUME_TABLE
не в состоянии извлечь данные заставляют второй пользователь не заполнили детали в RESUME_TABLE
и действует как сбой при извлечении KEY_USERID
для 3-го пользователя.
Как исправить это?
КОД:
DBAdapter.java:
public String get_user_id(String name) {
String[] column = new String[]{KEY_USERID};
String where = KEY_USERNAME + "=?";
Cursor c = mDB.query(DATABASE_TABLE, column, where,new String[]{""+ name + ""}, null, null,null);
String user_id = "";
int iuser_id = c.getColumnIndex(KEY_USERID);
if (c != null)
c.moveToFirst();
user_id = user_id + c.getString(iuser_id) + "\t";
c.close();
return user_id;
}
ViewResume.java
if(get_from_create!=null)
{
if(get_from_create.hasExtra("UserId_Create"))
{
String user_id_create = get_from_create.getExtras().getString("UserId_Create"); // This is where i get the user id from the first table which is created dynamically.
dbAdapter.open();
Log.i("In_View Resume_from_create",user_id_create);
objective.setText(dbAdapter.getObjective(user_id_create));
degree.setText(dbAdapter.getDegree(user_id_create));
passed_out.setText(dbAdapter.getPassedOut(user_id_create));
university.setText(dbAdapter.getUniversity(user_id_create));
field.setText(dbAdapter.getField(user_id_create));
years_of_experience.setText(dbAdapter.getyears_of_experience(user_id_create));
areas_of_interest.setText(dbAdapter.getareas_of_interest(user_id_create));
dbAdapter.close();
}
Примечание:
KEY_USERID
является автоматическое приращение только для USER_TABLE
и не для RESUME_TABLE
.
Спасибо LS_dev. Но get_from_create - это намерение и извините, потому что я забыл упомянуть об этом. Кроме того, вы подразумеваете, что я не должен добавлять KEY_USERID в RESUME_TABLE в качестве первичного ключа? – San
Да, вы должны, но не АВТОМАТИЧЕСКИЕ !!! –