我的意图:我正在尝试增加 SQLite 列中的值。该列的类型为“REAL”。
问题:当我执行递增(使用 UPDATE)时,什么也没有发生,并且列没有被更新。我在游标 mCount、mPos 和 mRowIdColumnIndex 上得到 -1。
我的调查:我发现(通过将我的数据库导入 PC 并使用 SQLite 数据库浏览器打开它)当初始值为 NULL 时,我无法增加“真实”类型的值,所以我添加了“myColumn real DEFAULT 0.0”到我的表创建方法。这会将值设置为 0.0,以后可以递增。
SQLiteQuery: UPDATE ts_stocks SET score= (score + 1.0) WHERE stock_id=35 AND t_id=1
我的表结构:
create table ts_stocks (_id integer primary key autoincrement,
t_id integer,
stock_id integer,
score real DEFAULT 0.0,
datetime text not null,
FOREIGN KEY(t_id) REFERENCES ts(_id) ON DELETE CASCADE ON UPDATE CASCADE);
FOREIGN KEY(stock_id) REFERENCES stocks(_id) ON DELETE CASCADE ON UPDATE CASCADE);
我的代码:
public Cursor updateParticipantScore(TParticipant tParticipant, Long tId)
{
String queryUpdateParticipantScore = "UPDATE " +
StConstants.TblTsStocks.TBL_TS_STOCKS_NAME +
" SET " +
StConstants.TblTsStocks.TBL_COLUMN_TS_STOCKS_STOCK_SCORE +
"= (" +
StConstants.TblTsStocks.TBL_COLUMN_TS_STOCKS_STOCK_SCORE +
" + " +
tournamentParticipant.getScore() +
") WHERE " +
StConstants.TblTsStocks.TBL_COLUMN_TS_STOCKS_STOCK_ID +
"=" +
tParticipant.getStock().getId() +
" AND " +
StConstants.TblTsStocks.TBL_COLUMN_TS_STOCKS_TOURNAMENT_ID +
"=" +
tId;
Cursor resultSetCursor = mDb.rawQuery(queryUpdateParticipantScore, null);
return resultSetCursor;
}
此代码创建上述 SQL:
更新 ts_stocks SET score= (score + 1.0) WHERE stock_id=35 AND t_id=1
取自正在运行的应用程序调试器。在下载的 db WORKS 上使用此 SQL 语句 - 它以正确的方式增加“分数”。
任何人都知道我做错了什么?
感谢:D