渡ってきたint i,xの値に応じたsortの値の入れ替えがしたいです。sortの値がiだったところをxに変えて、xだったところをiに変えたいということです。
下記のようなコードを書いてみました。
心配な点として最初のupdateでsortの値がiになり、そのあとのupdateでwhereでの指定がその前にiに変えたものまで選択されてしまい、結果としてどっちもxになってしまわないかなというものがありましたが、それ以前にLogで表示される値に変化が全くないです。
どこを変えたら実装できますでしょうか?
よろしくお願いします。
public void sortOrder(int i, int x) { SQLPlaceOpenHelper placeOpenHelper = new SQLPlaceOpenHelper(context); SQLiteDatabase database = placeOpenHelper.getWritableDatabase(); try { database.beginTransaction(); database.execSQL("update " + SQLPlaceContract.Place.TABLE_NAME + "set " + SQLPlaceContract.Place.SORT + " = " + i + "where " + SQLPlaceContract.Place.SORT + " = " + x); database.execSQL("update " + SQLPlaceContract.Place.TABLE_NAME + "set " + SQLPlaceContract.Place.SORT + " = " + x + "where " + SQLPlaceContract.Place.SORT + " = " + i); database.setTransactionSuccessful(); } catch (SQLException e) { e.printStackTrace(); } finally { database.endTransaction(); } Cursor c = null; c = database.query( SQLPlaceContract.Place.TABLE_NAME, null, null, null, null, null, null ); Log.v("DB_TEST", "Count : " + c.getCount()); while ((c.moveToNext())) { int id = c.getInt(c.getColumnIndex(SQLPlaceContract.Place._ID)); String name = c.getString(c.getColumnIndex(SQLPlaceContract.Place.PLACE)); int sort= c.getInt(c.getColumnIndex(SQLPlaceContract.Place.SORT)); Log.v("DB_TEST", "id" + id + " name" + name + " sort" + sort); } c.close(); database.close(); } コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/30 04:43