从Java中的Dao类保存数组

时间:2018-06-13 16:40:48

标签: java jdbc

如何访问从enameEmployee的{​​{1}}字符串数组。我想用EmployeeDao之类的for循环保存值。如果我在bean类中编写st.setString(1,ename[l])方法没有问题,但我想在EmployeeSave()中编写

EmployeeDao

给我错误,因为PreparedStatement类型中的方法st.setString(1, E.getEname()) 不适用于参数(int,String [])。

Employee.class

package com;

setString(int, String)

EmployeeDao.class

public class Employee {

    public String[] getEname() {
        return ename;
    }

    public void setEname(String[] ename) {
        this.ename = ename;
    }

    private String ename[];

}

2 个答案:

答案 0 :(得分:0)

我认为问题来自于您定义Employee.ename字符串数组的方式。 只需使用private String ename;代替

答案 1 :(得分:0)

String [] ename是一个字符串数组,而不是一个字符串。您可以通过两种方式将其保存在数据库中:

1)一个单独的enames表

正确的方法是使用列创建单独的ename表:

employeeId
ename

在(employeeId,ename)上创建复合主键。

然后将每个ename保存为ename表中的单独行。然后从数据库中读取Employee,您需要通过employeeId读取ename表中的所有enames。

例如,假设我们的员工ID = 1且ename = [" name1"," name2"]。我们将在数据库的ename表中包含以下数据:

employeeId | ename
------------------
          1| name1
          1| name2

2)将String []序列化为String

您可以将ename数组序列化为单个字符串(作为JSON,XML,逗号分隔值),并在数据库中存储单个字符串值。

从数据库中读取数据时,需要从String反序列化为String []。

例如,假设我们的员工ID = 1且ename = [" name1"," name2"]。如果数据被序列化为JSON:

,我们将在数据库的Employee表中包含以下数据
    employeeId | ename
---------------------------------------
             1 | ["name1","name2"]