[英]Save Array From Dao Class in Java
如何访问从Employee
到EmployeeDao
的字符串的ename
数组。 我想用一个for循环保存值,例如st.setString(1,ename[l])
。 如果我在bean类中编写一个EmployeeSave()
方法没有问题,但是我想在EmployeeDao
编写它
st.setString(1, E.getEname())
给我错误,因为PreparedStatement类型的setString(int, String)
方法不适用于参数(int,String [])。
员工班
包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();
}
}
}
我认为问题出在您定义Employee.ename字符串数组的方式中。 只需使用private String ename;
代替
String [] ename是一个字符串数组,而不是单个字符串。 您可以通过两种方式将其保存在数据库中:
1)单独的名称表
正确的方法是使用列创建单独的ename表:
employeeId
ename
在(employeeId,ename)上创建复合主键。
然后将每个ename保存为ename表中的单独一行。 然后从数据库中读取Employee,您将需要按employeeId从ename表中读取所有ename。
例如,假设我们有一个id为1且ename = [“ name1”,“ name2”]的Employee。 数据库的ename表中将包含以下数据:
employeeId | ename
------------------
1| name1
1| name2
2)将String []序列化为String
您可以将ename数组序列化为单个字符串(如JSON,XML,逗号分隔值),并将单个字符串值存储在数据库中。
从数据库读取数据时,需要从String反序列化为String []。
例如,假设我们有一个id为1且ename = [“ name1”,“ name2”]的Employee。 如果数据序列化为JSON,我们将在数据库的Employee表中包含以下数据:
employeeId | ename
---------------------------------------
1 | ["name1","name2"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.