我正在尝试将ArrayList对象存储在数据库中

时间:2019-03-05 09:19:51

标签: java mysql collections

我正在尝试将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)
    )

3 个答案:

答案 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();
 }