2
In my java servlet application!

を使用して、String [] の形式のように、チェックボックスで選択された値を取得しています。

String[] skills = request.getParameterValues("skills");

次に、この string[] スキルセットの値を Oracle データベースに保存する必要があります。私は2つの小さな解決策を得ました1)(、)または(/)を追加して、その文字列配列を1つの文字列にします。次に、それを db (skill VARCHAR(1000)) 列に格納します。db 列でこのようなサイズを取得することは、あまり良い方法ではありません。2) 計画があります!すべてのチェックボックス名を db like (C Boolean、C++ boolean、Java boolean .....) の列として使用します。次に、テーブルの作成時に、すべてのデフォルト値を false にします。perticuler チェックボックスがチェックされている場合、値 true を db のように挿入します。たとえば、ユーザーがチェックボックス java のみを選択した場合、値として true を db に挿入します。

「これは非常に複雑なプロセスのようです」私の観点からすると、これら 2 つのオプションはトリッキーですが、企業の標準的な使用方法ではありません。これらのばかげたトリック以外に、文字列配列をデータベースに保存する方法はありますか???

String[] を受け取り、string[] を返すデータ型の使用方法は db にありますか??

もしあれば?詳細な手順を教えてください!!

前もって感謝します!

最近、私は1つの解決策を見つけました: VARRAY in oracle db =>

SQL> CREATE OR REPLACE TYPE smoketype IS VARRAY(3) OF VARCHAR(30)
  2  /

Type created.

SQL> CREATE TABLE register (fname VARCHAR(30), lname VARCHAR(30), gender VARCHAR
(1), smoke SMOKETYPE);

Table created.

SQL> INSERT INTO register VALUES
  2  (
  3  'omkar','t','m',
  4  smoketype('no')
  5  );

1 row created.

SQL> INSERT INTO register VALUES
  2  (
  3  'om','T','m',
  4  smoketype('no','not at all')
  5  );

1 row created.

SQL> INSERT INTO register VALUES
  2  (
  3  'onky','T','m',
  4  smoketype('no','never','not at all')
  5  );

1 row created.

上記で..配列のように複数の値を取る型を作成しました。しかし、私のサーブレットでは、ステートメントを作成して select * from register クエリを実行すると、ResultSet obj が取得されます。しかし、その Smoketype 配列を String[] に戻すにはどうすればよいでしょうか? string[] 値を取得するにはどうすればよいですか? 誰か私を助けてください?

4

1 に答える 1

0

文字列配列のすべての値は実際の文字列ですか、それとも単なる何らかのフラグですか? 真/偽など

単なるフラグの場合は、特定のチェックボックスに対応する各ビットをマスクとして保存できます。

たとえば、値が true/false の 3 つのチェックボックス x、y、z がある場合、マスクを 101 などの 3 ビットにすることができます (x = 1、y = 0、z = 1 を表す)。

実際にマスクの意味を追跡する必要があるため、それを保存する最もわかりやすい方法ではありませんが、配列のすべての値を連結するだけでなく、より多くのスペースを節約できます

于 2012-10-18T19:52:08.550 に答える