如何将字符串数组存储到数据库中?

时间:2012-10-18 18:48:50

标签: servlets jdbc oracle10g

In my java servlet application!

我正在获取复选框选中的值 使用

以String []的形式
String[] skills = request.getParameterValues("skills");

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

“这看起来非常复杂” 从我的角度来看,这两个选项很棘手,但不是企业标准使用! 有没有办法将String数组存储在db中,而不是像这些stuppid技巧???

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

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

提前致谢!

最近我找到了一个解决方案:oracle db =>

中的VARRAY
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.

使用上面的...我创建了一个类似于数组的多个值的类型。 但是当我创建一个语句并从寄存器执行selec *时,在我的servlet中 查询然后我会得到 ResultSet obj! 但是我怎么能将那个smoketype数组检索到String []中呢? 我怎么能检索字符串[]值? 请有人帮帮我吗?

1 个答案:

答案 0 :(得分:0)

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

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

例如,如果您有3个复选框x,y,z,其值为true / false,则可以将掩码设为3位,例如101(deonoting x = 1,y = 0,z = 1)。 / p>

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