2

私はjquery datables/jedtiableを使用しており、ROWとCOLUMN番号と新しい値を次のように更新して返しました。これは、sqlite DB への JDBC 接続を持つ別の JSP ページに POST されます。

注: 列名を指定したくありません。他のページから POST された int に基づく数値のみです。うまくいけば、これで私の質問が明確になります

行、値、列

2 いいえ 4

「いいえ」を行 2 列 4 に更新する SQL は何ですか?

アップデート* ** * ** * **

これは現在行 ID で動作していますが、列を数値で使用できるようにしたいと考えています。

     String value = request.getParameter("value");
     String row = request.getParameter("row_id");
     String column = request.getParameter("column");

UPDATE PROJECT SET DELIVERY_STREAM ='"+value+"' WHERE rowid = "+rowId+";
4

2 に答える 2

1

すべての SQL コマンドには、数値ではなく列名が必要です。

さらに、SQL テーブルには、行番号が意味を持つ固有の順序がありません。レコードは、いくつかの一意のフィールド値によってのみ識別できます。

したがって、厳密に言えば、あなたの質問に対する答えは「いいえ」です。


番号で列にアクセスするには、番号を対応する名前にマップできるように、どの列にどの番号があるかを知る必要があります。

String[] columnNames = new String[] {
    "NAME", "DELIVERY_STREAM", "NUMBER_OF_FEET", "RETICULATED", ...
};
int columnNumber = ...;

String sql = "UPDATE Project SET " + columnNames[columnNumber] + " = ? WHERE ...";

行番号から実際のレコードへのマッピングには、それらのレコードのキー値を含む配列をどこかに格納する必要がありますが、複数の JSP ページを使用する場合、これは実行できません。行番号の代わりに、元のテーブルのキー値 (主キー、または SQLite のrowid) を使用してレコードを識別します。それが鍵の目的です。

于 2013-03-03T10:20:30.690 に答える
0

テーブルに一意の注文フィールド (ord_field) があるとします。次に、これに近いことを行うことができます:

UPDATE table SET value ='some value'
FROM (
SELECT *, (select COUNT(0) 
            from table t1 
            where t2.ord_field <= t1.ord_field 
            ) AS ord
FROM table t2
ORDER BY ord_field ASC) a WHERE table.ord_field = a.ord_field AND a.ord BETTWEN 2 and 4
于 2013-03-03T08:40:09.097 に答える