0

テーブル ( id 、 text) があり、次のように列の 2 つの値を交換する必要があります。

Before. 
           1 one. 
           2 two.
           3 three.

After ( 1 and 3 swap)          
           1 three 
           2 two
           3 one
4

3 に答える 3

0

各行を更新するには、次のようなものが必要です。

void updateMyTableText (MyTableRow row)
{
  ContentValues values = new ContentValues();
  values.put ("text", MyTableRow.text);

  String where = "id = ?";
  String[] whereArgs = new String[1];
  whereArgs[0] = Long.toString (row.id);

  getDb().update ("MyTable", values, where, whereArgs);
}

MyTableRow の場所

class MyTableRow
{
  long id;
  String text;
}

行 1 と 3 の「テキスト」を取得するために、いくつかのクエリも必要になります。

クエリを実行する 1 つの方法を次に示します。

long getId (String text)
{
  // do the query
  String query = "select id from MyTable where text = ? ";
  String[] args = new String[1];
  args[0] = text;
  Cursor cursor = getDb().rawQuery (query, args);
  if (cursor == null)
    throw new IllegalStateException ("cursor is null");

  try
  {
    // get the results
    if (!cursor.moveToNext())
      return -1; // row not found

    long id = cursor.getLong (0);
    return id;
  }
  finally
  {
    cursor.close();
  }
}
于 2013-08-05T16:34:53.910 に答える
0

行自体の値を変更しようとしていますか? ほとんどのデータベース システムでは、値が永続的に関連付けられているという前提があるため、値を任意に交換することはできません。UPDATE コマンドを発行して値を永続的に変更することもできますが、これを一時的に行うと、データが返された後に処理される問題になる可能性があります。

UPDATE table_name
SET text=three
WHERE id=1;

UPDATE table_name
SET text=one
WHERE id=3;
于 2013-08-05T16:34:56.477 に答える
0
// Assuming id1 < id2

void swap(id1,id2)
{
    SQLiteDatabase db = this.getWritableDatabase(); 
        ContentValues CV = new ContentValues();

        // First get the 2 rows
        Cursor res = db.rawQuery("SELECT COLUMN_NAME FROM "+ TABLE_NAME +" WHERE ID IN ("+id1+","+id2+") ORDER BY ID ASC",null);
        res.moveToFirst();
        CV.put("COLUMN_NAME",res.getString(0));
        //Update 1st row with 2nd item
        db.update(TABLE_NAME,CV,"ID = ?",new String[]{id2+""});
        res.moveToNext();
        CV.put("COLUMN_NAME",res.getString(0));
        //Update 2nd row with 1st item
        db.update(TABLE_NAME,CV,"ID = ?",new String[]{id1+""});
}  
それが役に立てば幸い!!
于 2021-07-15T11:30:17.620 に答える