我正在尝试将ArrayList对象存储在数据库中,但是当我将对象设置为PreparedStatement时遇到错误,我希望用户在数据库的单个列中输入多个值
我的Java代码:
ui.R ... fluidRow(
column(
width = 12,
box(width = NULL, status = "info", solidHeader = T, title = "Earnings Scanner",
DTOutput("tab"),style = "height:700px; width:700px; overflow-y: scroll;overflow-x: scroll;font-size:70%;"
)
)
)
server.R ... output$tab = renderDT(
datatable(
frame.ea, filter = 'top', options = list(
pageLength = 10, autoWidth = TRUE), class = 'cell-border stripe', rownames = F)
)
答案 0 :(得分:0)
您应该以对您有用的方式手动将数组转换为字符串,这样才能保存它。问题在于JDBC没有相应的类型来自动映射您的对象,因此取决于您。 另一个选择是创建另一个表并设置外键。这取决于您应该遵循的真实数据。
答案 1 :(得分:0)
如果您要查找的是,例如,
,您可以遍历List并将其内容作为单个String添加到数据库中。String list = "";
for (String s : name) {
list += s + " ";
}
ps.setString(3, list);
答案 2 :(得分:0)
通过将对象转换为byte []数组,可以将任何对象存储在数据库中。您的列类型应为“ BLOB”类型。
示例代码段
...........................................
ByteArrayOutputStream baos = null;
ObjectOutputStream oout = null;
try{
baos = new ByteArrayOutputStream();
oout = new ObjectOutputStream(baos);
oout.writeObject(<<ARRAYLIST_OBJECT>>);
oout.close();
byte[] blobdata = baos.toByteArray();
preparedStmt.setBytes(5, blobdata);
.........................
preparedStmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}