如何访问从Employee到EmployeeDao的ename字符串数组。我想用一个像st.setString(1,ename[l])这样的for循环来保存这个值。如果我在bean类中编写EmployeeSave()方法,则没有问题,但我想用EmployeeDao编写它
st.setString(1, E.getEname()) 给我一个错误,因为类型PreparedStatement中的方法setString(int, String)不适用于参数(int,String[])。
Employee.class
com包;
public class Employee {
public String[] getEname() {
return ename;
}
public void setEname(String[] ename) {
this.ename = ename;
}
private String ename[];
}EmployeeDao.class
package com;
import java.sql.*;
public class EmployeeDao {
public static void SaveEmployee(Employee E) {
Connection con = null;
String sql = "";
try
{
PreparedStatement st = con.prepareStatement(sql);
for (int l = 0; l < E.getEname().length; l++)
{
st.setString(1, E.getEname());
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}发布于 2018-06-14 00:52:47
我认为问题来自于您定义Employee.ename字符串数组的方式。只需使用private String ename;即可
发布于 2018-06-14 02:24:08
String[] ename是字符串数组,而不是单个字符串。您可以通过两种方式将其保存到数据库中:
1)一个单独的名称表
正确的方法是创建一个包含列的单独ename表:
employeeId
ename在(employeeId,ename)上创建复合主键。
然后将每个ename保存为ename表中的单独行。然后从数据库中读取Employee,您需要通过employeeId从ename表中读取所有ename。
例如,假设我们的Employee具有id=1和ename="name1","name2“。我们将在数据库的ename表中包含以下数据:
employeeId | ename
------------------
1| name1
1| name22)将String[]序列化为字符串
您可以将ename数组序列化为单个字符串(作为JSON、XML、逗号分隔值),并将单个字符串值存储在数据库中。
从数据库读取数据时,需要将String反序列化为String[]。
例如,假设我们的Employee具有id=1和ename="name1","name2“。如果数据被序列化为JSON,我们将在数据库的Employee表中包含以下数据:
employeeId | ename
---------------------------------------
1 | ["name1","name2"] https://stackoverflow.com/questions/50842299
复制相似问题