2016-01-20 98 views
0

我想創建一個只有一個單一的行,爲插入或更新和閱讀的android sqlite表,我該怎麼做,因爲我只知道如何創建多行創建一個android sqlite包含一個表只有單行

該表只包含1個單行,用於用戶插入數據和存儲,讀取時數據會出來,最後更新意味着它將覆蓋該行中的數據。

這是我DBHelperNote.java

public static final String TABLE_GOAL = "goal"; 
    public static final String GOAL_ID= "goal_id"; 
    public static final String GENDER = "gender"; 
    public static final String AGE = "age"; 
    public static final String HEIGHT = "height"; 
    public static final String WEIGHT = "weight"; 
    public static final String GOAL = "goal"; 

     private static final String CREATE_TABLE_GOAL = "CREATE TABLE " + TABLE_GOAL + " (" + 
        GOAL_ID + " INTEGER PRIMARY KEY, " + 
        GENDER + " text not null, " + 
        AGE + " text not null, "+ 
        HEIGHT + " text not null, "+ 
        WEIGHT + " text not null, "+ 
        GOAL + " text not null "+ 
        ");"; 

這是SQLControlerWeight.java

public void insertGoal(String gd,String age,String hg,String wg,,String gl) { 
     ContentValues cv = new ContentValues(); 
     cv.put(DBHelperNote.GENDER, gd); 
     cv.put(DBHelperNote.AGE, age); 
     cv.put(DBHelperNote.HEIGHT, hg); 
     cv.put(DBHelperNote.WEIGHT, wg); 
     cv.put(DBHelperNote.GOAL, gl); 
     database.insert(DBHelperNote.TABLE_GOAL, null, cv); 
    } 

    public Cursor readGoal() { 
     String[] allColummn = new String[] { 
       DBHelperNote.GOAL_ID, 
       DBHelperNote.GENDER, 
       DBHelperNote.AGE, 
       DBHelperNote.HEIGHT, 
       DBHelperNote.WEIGHT, 
       DBHelperNote.GOAL, 
     }; 
     Cursor c = database.query(DBHelperNote.TABLE_GOAL, allColummn, null, 
       null, null, null, null); 
     if (c != null) { 
      c.moveToFirst(); 
     } 
     return c; 
    } 

這實際上是把讀取數據的方法,但它是從基陣的意思是多行,但我不't知道如何將其改爲只調用一行

dbconnection = new SQLControlerWeight(this); 
     dbconnection.openDatabase(); 

     Cursor cursor = dbconnection.readGoal(); 

     String[] from = new String[]{ 
       DBHelperNote.GOAL_ID, 
       DBHelperNote.GENDER, 
       DBHelperNote.AGE, 
       DBHelperNote.HEIGHT, 
       DBHelperNote.WEIGHT, 
       DBHelperNote.GOAL, 
     }; 
     int[] to = new int[]{ 
       R.id.goal_id, 
       R.id.field_gender, 
       R.id.field_age, 
       R.id.field_height, 
       R.id.field_weight, 
       R.id.field_goal, 

     }; 
+0

更新您的表一樣'GOAL_ID' – Mohit

回答

0

因爲您將擁有GOAL_ID個插入您可以修改您插入功能

public void insertGoal(String goal_id, String gd,String age,String hg,String wg,,String gl) { 
     ContentValues cv = new ContentValues(); 
     if (goal_id != null){ 
      cv.put(DBHelperNote.GOAL_ID, goal_id); 
     } 
     cv.put(DBHelperNote.GENDER, gd); 
     cv.put(DBHelperNote.AGE, age); 
     cv.put(DBHelperNote.HEIGHT, hg); 
     cv.put(DBHelperNote.WEIGHT, wg); 
     cv.put(DBHelperNote.GOAL, gl); 
     database.replace(DBHelperNote.TABLE_GOAL, null, cv); 
    } 

改造所做的是改變插入來代替,這將確保如果提供主鍵值和行與ID存在,那麼它將會取代現有的行而無需創建新的。最重要的是檢查goal_id是否爲null的if條件,如果爲null,則不在contentvalue中提供該條件。

正確修改if條件以正確比較Goal_id,因爲我剛剛使用了可以從您的問題內容中形象化的那一個。

+0

OK,現在你嘗試的方法,謝謝 –

+0

但如何對readGoal(),原因礦readGoal方法實際上是讀陣列,但現在我只有1行,所以我可以更改我的代碼? –

+0

這將不會有所作爲,因爲它會讀取光標所有可用的行,所以如果一個然後會讀取一個,如果n行然後將讀取n行 –

0

使用RawQuery方法更容易一點。

c1 = db.rawQuery(「select * from Table_Name」,null); c1.moveToFirst();

做{

str = c1.getString(c1.getColumnIndex("FieldName")); 
ab.add(str); 
} while (c1.moveToNext()); 
+0

雅,我知道原始查詢更容易,但是當我讀取需要放在文本中的所有數據視圖取決於每個textview ID,以及如何? –

+0

然後直接使用下面的代碼 TextViewId.setText(c1.getString(c1.getColumnIndex(「FieldName」))); –

+0

不能得到你的意思 –

相關問題