2017-01-17 4 views
0

私は次のような準備ができていると言います。Sqlite Prepared Statement、値を変更しない/既存と同じに保つ? (Android)

"UPDATE table1 SET column1 = ?, column2 = ? WHERE column3 = ?" 

このステートメントを使用して、column1またはcolumn2の値のみを変更できますか?私の問題は例より少し複雑だと思うかもしれませんが、基本的には、更新可能な列の値がいくつかありますが、さまざまなバリエーションがあります。 。

私は当初、パラメータとしてカラム名を設定できると思っていましたが、これはうまくいかず、パラメータが文字列としてエスケープされるためです。

私はサブクエリがうまくいくと思っていますが、これはおそらくそれぞれの場合についてのステートメントを持つよりもプログラマチックに達成するほうがはるかに理解しにくいでしょう。

私のオプションはどうしますか?ありがとう!

+0

達成したいことは何ですか?テーブルのいくつかの列を更新する場合は、上記の例が有効です。 – Dibzmania

+0

私はテーブルの列を更新する方法を知っていますが、これはすでに動作していますが、具体的には、プリペアドステートメントに記載されている列を1つ(またはそれ以上)残すことが可能かどうか、 DB。 – hamham

答えて

1

パラメータを使用している場合、パラメータ値はリテラル値です。つまり、実行されたり解釈されたりしません。

このステートメントに古い値を取得する唯一の方法は、別のクエリでそれを読み取り、そのクエリの結果をパラメータ値として使用することです。

SQLiteはクライアント/サーバデータベースではないため、文を準備するための大きなオーバーヘッドはありません。準備された複数のステートメントを使用するか、またはそれらをただちにオンザフライで構築するだけです。

+0

ありがとう、そうです、私はこれが当てはまると思っていましたが、代わりに多くの準備文を選んだのです。とにかくサーバーのAPIの不一致があるため、これを行う必要があります。そのために一度アイロンをかけてしまえば、もっとクリーンアップできるはずです。お返事をありがとうございます。 – hamham

関連する問題