【问题标题】:How to store the string array into databse?如何将字符串数组存储到数据库中?
【发布时间】:2012-10-09 07:47:59
【问题描述】:
In my java servlet application!

我正在获取复选框选择的值 通过使用

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

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

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

db 中是否有任何使用我们的 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 中,当我创建一个语句并从寄存器执行一个选择 * 查询然后我会得到 结果集对象! 但是我怎样才能将该smoketype数组检索到String []中呢? 我怎样才能检索字符串 [] 值? 有人帮帮我吗?

【问题讨论】:

    标签: servlets jdbc oracle10g


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      相关资源
      最近更新 更多