2013-12-09 27 views
0

我有兩個表作爲USER_TABLE其中i具有所有用戶的詳細信息作爲用戶名,姓名等,並同樣地,我有一個名爲RESUME_TABLE其中i有目的,度另一個表,大學等 兩個共同的列是KEY_USERID(動態創建),我用這個ID匹配兩個表。SQLite數據庫誤差(毛刺在橋兩個表之間)

問:

我註冊一個用戶,他的信息被存儲在USER_TABLE,並說他的KEY_USERID自動生成(主鍵)爲1,然後我創建一個使用相同的RESUME_TABLE爲他的簡歷KEY_USERID 1。從RESUME_TABLE插入並從中檢索簡歷內容時,我傳遞從第一個表中獲取的KEY_USERID作爲參數。

說,我對於其他用戶,從而產生KEY_USERID 2再次做到這一點,但我只填寫了 USER_TABLERESUME_TABLE是空

當我重複這再次填充兩個表,那麼RESUME_TABLE無法獲取數據導致第二用戶未在RESUME_TABLE填寫相關信息,並充當故障而檢索KEY_USERID爲第三用戶。

我該如何糾正?


CODE:

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

此外,要了解爲什麼您在代碼中出現錯誤的ID,您必須發佈get_from_create函數。

+0

謝謝LS_dev。但get_from_create是一個意圖,很遺憾,因爲我忘了提到這一點。另外,你是否暗示我不應該將RESUME_TABLE中的KEY_USERID作爲主鍵? – San

+0

是的,你應該,但不是自動! –