这不是错误,但我似乎无法更新我的TABLE活动。
我找不到这些陈述的错误。这些值没有问题。
goal_id = Integer.parseInt(extras.getString("goalid"));
int i=0;
Activities act = new Activities(goal_id,activityname.getText().toString(),Integer.parseInt(days.getText().toString()),i,false);
dbhandler.updateActivty(act);
//更新活动
public int updateActivty(Activities act) {
SQLiteDatabase db = dbhandler.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(MyDBHandler.COLUMN_ACTIVITY_NAME, act.getActivityName());
values.put(MyDBHandler.COLUMN_DAYS, act.getDays());
values.put(MyDBHandler.COLUMN_NO_OF_TASKS, act.getNoOfTasks());
values.put(MyDBHandler.COLUMN_COMPLETE, act.getComplete());
// updating row
return db.update(MyDBHandler.TABLE_ACTIVITIES, values, MyDBHandler.COLUMN_ID + " = ?",
new String[] { String.valueOf(act.getId()) });
}
答案 0 :(得分:0)
永远不会调用updateActivty方法。使用事件总线将数据活动发送到活动。
答案 1 :(得分:0)
如果我是你,我会更多地工作并做以下事情:
通过搜索该id的值来尝试查看数据是否在数据库中:
while variable is 'yes':
#continue or do something
if someoccurances:
variable = 'no'
#break or call a function that elif does
#if break, Do your elif here!
if variable is 'no':
#Do your function here!
下一个:
您可以创建一个可以随处访问的适配器:
public static Cursor find(SQLiteDatabase db, String uid) {
Tables table = Tables.YourTable;//it can be an enum or something static that contain/gives access to all of your columns. Hopefully it is clear.
return db.query(table.getTableName(),
getColumnNames(table),
COLUMN_NAME_ID + " =?",
new String[]{uid}, null, null, null);
}
你的行看起来像这样:
MyAdapter implements IMyAdapter
{
@Override
public boolean insert(IRow row){
boolean success = false;
synchronized (lock) {
openIfDatabaseIsClosned();//here you get the writeable database and store it somewhere(I do it for multiple databases).
try {
row.insert(getDB());
success = true;
} catch (Exception e) {
Log.e(TAG, "Error:" + e.getMessage(), e);
}
}
return success;
}
@Override
public boolean update(IRow row) {
boolean success = false;
synchronized (lock) {
openDatabaseIfClosed();
try {
row.update(getDatabase());
success = true;
} catch (Exception e) {
Log.e(TAG, "Your error message:" + e.getMessage(), e);
}
}
return success;
}
}
接下来你实现像
interface IRow
{
void insert(SqliteDatabase db);
void update(SqliteDatabase db);
void delete(SqliteDatabase db);
void find(SqliteDatabase db);
}
正如您所注意到的,在这种情况下,YourTable称为MyColumn并包含一些通常属于MyRow的列,以便在更新值时可以访问列。
基本上你只需要创建表格就完成了。
这对3-4个项目的工作/工作没有任何错误。
我更喜欢这种方式,因为传递字符串等很多事情都会出错。