2
In my java servlet application!

我通过使用

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

现在我必须将此字符串 [] 技能组值存储到 oracle db 中!我有 2 个小解决方案 1) 我将通过附加 (,) 或 (/) 将该字符串数组转换为 1 个字符串。然后我将其存储在 db (skill VARCHAR(1000)) 列中。在 db 列中采用这样的大小并不是一个好习惯。2)我有一个计划!我会将所有复选框名称作为 db 中的列,例如(C 布尔值、C++ 布尔值、Java 布尔值.....)。然后在创建表时,我会将它们的所有默认值设为 false。当检查perticuler复选框时,我将插入值true的true,例如在db中,例如,如果用户选择复选框java,则我会因为它的值而插入db true。

从我的角度来看,“这似乎非常复杂的过程”这两个选项很棘手,但不是企业标准使用!除了像这些愚蠢的技巧之外,还有什么方法可以将字符串数组存储在数据库中???

db 中是否有任何数据类型使用我们的 String[] 并返回我们的 string[] ?

如果有的话?请给我详细的步骤!!

提前致谢!

最近我找到了一个解决方案: 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.

有了上面的..我创建了一个像数组一样接受多个值的类型。但是在我的 servlet 中,当我创建一个语句并从寄存器查询中执行一个 selec * 时,我将获得 ResultSet obj!但是我怎样才能将该smoketype数组检索到String []中呢?我怎样才能检索字符串 [] 值?请有人帮助我?

4

1 回答 1

0

字符串数组中的每个值都是实际的字符串,还是只是某种标志?真/假等

如果它只是一个标志,您可以将其存储为掩码,每个位对应于某个特定的复选框,

例如,如果您有 3 个复选框 x、y、z 的值为真/假,则可以将掩码设为 3 位,例如 101(表示 x = 1、y = 0、z = 1)。

这不是存储它的最具描述性的方式,因为您必须跟踪实际掩码的含义,但它比仅连接数组的每个值节省更多空间

于 2012-10-18T19:52:08.550 回答