我有一个非常大的输入表单,有超过90个字段,我需要将所有的值存储在数据库中。
下面只是一个测试示例代码,用来展示我现在是如何插入我的值的。
public void insertToDB() {
Connection con = SoftwareConnectionFactory.getInstance().getConnection();
PreparedStatement ps = null;
String sql = "INSERT INTO person.test (name, class, subject) "
+ "VALUES(?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, class);
ps.setString(3, subject);
ps.executeUpdate();
} catch (Exception e) {
log.error("error storing into db: " + e.getMessage());
} finally {
SoftwareConnectionFactory.getInstance().closeConnection(con);
}
}
上面的代码运行得很好,但我正在尝试通过在数组的帮助下设置它来找到一种简洁的编码方式。我调查了以下内容:
String[] check = { name, class, subject };
Array arrayCcheck = con.createArrayOf("VARCHAR", check);我当前的dbpc不支持createArrayOf,我正在尝试寻找替代方法。我已经尝试更新我的jar文件,但上面的方法仍然不起作用。我试着让我的代码尽可能的简短。任何帮助都是非常感谢的。谢谢。
发布于 2019-08-13 05:10:08
我的建议如下:
将表中的字段数量减少到当前用于搜索查询的字段(您还可以考虑将来可能使用的字段)。因此,您将不会有90字段表。
要存储其他所有内容,可以将对象解析为JSON并将整个对象存储在一个附加的表字段中。当你要从数据库中读取数据时,你会把它解析回来。
因此,你将会得到类似这样的东西:
写
ObjectWith90Fields obj;
String sql = "INSERT INTO person.test (name, class, json) "
+ "VALUES(?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, obj.getName());
ps.setString(2, obj.getClass());
ps.setString(3, createJson(obj));
ps.executeUpdate();
}朗读
ObjectWith90Fields obj;
String sql = "SELECT * FROM person.test";
try {
st = con.createStatement(sql);
ResultSet rs = st.execute(sql);
ObjectWith90Fields obj = parseJson(rs.getString("json"));
}https://stackoverflow.com/questions/57467596
复制相似问题