2014-05-11 57 views
0

我在这个问题上遇到了很大的麻烦。我有我的sqlite表称为类别,我把列“名称”和“限制”作为文本和整数。下面是一些代码:Android SQLite行不更新

private static final String CREATE_TABLE_CATEGORY = "CREATE TABLE " 
      + TABLE_CATEGORIES + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_CATEGORY_NAME 
      + " TEXT," + KEY_SET_LIMIT + " INTEGER" + ")"; 

有模型类范畴:

public class Category { 

int id, limit; 
String categoryName; 

// Constructors 

public Category(){ 

} 

public Category(String categoryName, int limit){ 
    this.categoryName = categoryName; 
    this.limit = limit; 
} 

//Setters 

public void setCategoryName(String categoryName){ 
    this.categoryName = categoryName; 
} 

public void setId(int id){ 
    this.id = id; 
} 

public void setLimit(int limit) { 
    this.limit = limit; 
} 

// Getters 

public String getCategoryName(){ 
    return this.categoryName; 
} 

public int getId(){ 
    return this.id; 
} 

public int getLimit() { 
    return this.limit; 
} 

@Override 
public String toString(){ 
    return getId() + " " + getCategoryName() + " " + getLimit(); 
} 




} 

还有的创建类别和更新方法:

public long createCategory(Category cat) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_CATEGORY_NAME, cat.getCategoryName()); 
    values.put(KEY_SET_LIMIT, cat.getLimit()); 


    // insert row 
    long cat_id = db.insert(TABLE_CATEGORIES, null, values); 

    return cat_id; 
} 

public int updateCategoryLimit(long cat_id, int limit) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_SET_LIMIT, limit); 


    // updating row 
    return db.update(TABLE_CATEGORIES, values, KEY_ID + " = ?", 
      new String[] { String.valueOf(cat_id) }); 
} 

在飞旋我从类别类已覆盖toString方法。它显示如下所示。从左侧:ID,Category_Name,Category_Limit。问题是我将所有限制设置为10.即使我使用其他整数,它总是显示'2'。请帮助:)

这里的链接图片:http://i.stack.imgur.com/Ae3YZ.png

回答

1

插入()调用返回-1,如果发生错误。我想你应该检查它。 并确保您编写正确的列名称。 我试过你的代码,工作正常!

05-11 23:13:14.110:I/DB更新S =(30650):S = 1

ContentValues values = new ContentValues(); 
     values.put(KEY_SET_LIMIT, 29); 
     int s= db.update(TABLE_CATEGORIES, values, KEY_ID + " = ?", new String[] { String.valueOf(2) }); 
     Log.i("db update s=", "s= " +s); 
+0

但类别的一个很好的方式加入。 ID和Category_Name很好,但问题与限制。我将在一分钟内检查insert() –

+0

这是一个插入返回的图像。它看起来对我来说很好:http://s10.postimg.org/jxmkfwvqh/fail2.png –

+0

我试过你的代码,工作正常!确保:KEY_ID +“=?” ,你有选择正确的key_id。 –