私の意図:SQLite列の値をインクリメントしようとしています。列のタイプは「REAL」です。
問題:インクリメントを実行しているとき(UPDATEを使用)、何も起こらず、列が更新されていません。カーソルmCount、mPos、およびmRowIdColumnIndexで-1を取得します。
私の調査:(データベースをPCにインポートしてSQLiteデータベースブラウザで開くことにより)初期値がNULLの場合、タイプ「real」の値をインクリメントできないことがわかったので、「myColumnrealDEFAULT0.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を作成します。
UPDATE ts_stocks SET score =(score + 1.0)WHERE stock_id = 35 AND t_id = 1
実行中のアプリケーションデバッガーから取得。ダウンロードしたdbWORKSでこのSQLステートメントを使用すると、正しい方法で「スコア」が増加します。
誰かが私が間違っていることの手がかりを持っていますか?
ありがとう