我有一组数组值,我想插入数据库,但结果却是我不想要的。
我希望我的数据库可以像这样存储:
id_code | id_description
---------------------------
PO1 | hello
PO2 | hi
但是当我运行代码时,它存储如下:
id_code | id_description
-----------------------------------
[PO1,P02] | [hello, hi]
这是编码:
public void addID(IDInfo IDInformation) {
try {
PreparedStatement preparedStatement = connection
.prepareStatement("INSERT INTO id (id_code, id_description)"
+ "VALUES (?, ?)");
preparedStatement.setString(1, Arrays.toString(IDInformation.getIDCode()));
preparedStatement.setString(2, Arrays.toString(IDInformation.getIDDescription()));
preparedStatement.executeUpdate();
}
}
catch (SQLException e){
e.printStackTrace();
}
}
Controller :
String action = request.getParameter("action");
IDInfo idInfo = new IDInfo();
String[] Code = request.getParameterValues("idCode");
String [] Describe = request.getParameterValues("idDescription");
idInfo.setidCode(Code);
idInfo.setidDescription(Describe);
这是怎么造成的,如何解决?
最佳答案
PreparedStatement preparedStatement = connection
.prepareStatement("INSERT INTO id (id_code, id_description)"
+ "VALUES (?, ?)");
preparedStatement.setString(1, Arrays.toString(IDInformation.getIDCode()));
preparedStatement.setString(2, Arrays.toString(IDInformation.getIDDescription()));
preparedStatement.executeUpdate();
阅读上面的代码。它有什么作用?它执行单个请求,创建包含两个值的单行。
你想要的是两行。
所以你应该执行该语句两次:
- 将第一个代码和第一个描述作为参数
- 其中第二个代码和第二个描述作为参数
不使用对象会让你自己的任务变得困难。您应该拥有一个包含对象的数组(或集合),而不是拥有两个数组,一个包含代码,一个包含描述。每个对象都有一个代码和一个描述:
PreparedStatement preparedStatement = connection
.prepareStatement("INSERT INTO id (id_code, id_description)"
+ "VALUES (?, ?)");
for (Product product : products) {
preparedStatement.setString(1, product.getCode());
preparedStatement.setString(2, product.getDescription());
preparedStatement.executeUpdate();
}
关于java - 数组值存入数据库postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955160/