私はSQLiteデータベーステーブルを整数値で更新しようとしています。最初のものはテーブルを更新せず、2番目のアプローチはSQLiteExceptionを返します。 updateメソッドを使用して 第一 - 第二アンドロイドでSQLiteデータベースを更新するには?
public void updateBookQty(String quantity,String bookId)
{
SQLiteDatabase db = this.getWritableDatabase();
int updateQty = getQuantity(bookId) - Integer.parseInt(quantity) ;
ContentValues values = new ContentValues();
values.put(KEY_QTY,updateQty);
try{
db.update(BOOKS_TABLE, values, KEY_BOOK_ID+ " = ?",
new String[] { String.valueOf(bookId) });
Log.d("BookUpdate", String.valueOf(updateQty));
}catch (SQLException e)
{
Log.d("UpdateError",e.toString());
}
}
ExecSQLメソッドを使用しては: - :
をSystem.err:android.database.sqlite - ここ
public void updateQty(Integer qty,String bookId) { int originalQty = getQuantity(bookId); int updateQty = originalQty - qty; try{ SQLiteDatabase db = this.getWritableDatabase(); String rawQuery = "update "+BOOKS_TABLE+" set "+KEY_QTY+" = "+updateQty+ " where "+KEY_BOOK_ID+" = "+bookId+" ;" ; db.execSQL(rawQuery); db.close(); Log.v("UpdateQty", "Qty updated"); } catch(Exception ex) { ex.printStackTrace(); } }
私はSQLiteExceptionを取得します。 SQLiteException: "0000169"の近く: 構文エラー(コード1):、コンパイル中:updated books_table set quantity = -10 where book_id = BK 0000169;あなたのIDとして
いけない返すdb.update' 'https://stackoverflow.com/a/17027063/3635454 – pleft
を参照、更新するための' execSQL'を使用し、これを試してください影響を受ける行の数である 'int'。あなたはあなたのケースで '0'を返すと確信していますか?さらに、 'bookId'は文字列なので、' String.valueOf(bookId) 'は' bookId'変数を渡します。 – pleft
@pleft bookIdのString.valueOfを削除しようとしました。はい、私はそれが0を返す影響を受ける行の数を記録しようとしました。あなたはこの問題を引き起こしていると思われますか? – anup