2013-12-09 2 views
0

У меня есть две таблицы, как 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.

ответ

1

У вас не может быть двух автоматических ключей, ссылающихся на одни и те же элементы на разных таблицах.

У вас должен быть только автоматический первичный ключ в USER_TABLE. KEY_USERID не может быть автоматическим, он должен быть сопоставлен с USER_TABLE.KEY_USERID - эффективно, foreign key.

Кроме того, чтобы понять, почему вы получаете неправильный идентификатор в коде, вы должны отправить функцию get_from_create.

+0

Спасибо LS_dev. Но get_from_create - это намерение и извините, потому что я забыл упомянуть об этом. Кроме того, вы подразумеваете, что я не должен добавлять KEY_USERID в RESUME_TABLE в качестве первичного ключа? – San

+0

Да, вы должны, но не АВТОМАТИЧЕСКИЕ !!! –

Смежные вопросы