为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕莱坞森 2022-07-20 10:25:25
我正在尝试将 ArrayList 对象存储在数据库中,但是当我将对象设置为 PreparedStatement 时出现错误,我想用户在数据库的单个列中输入多个值我的Java代码:import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.ArrayList;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Uploads */@WebServlet("/Rough")public class Rough extends HttpServlet {    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        ArrayList<String> name=  new ArrayList<>();        try {            Class.forName("com.mysql.jdbc.Driver");            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/practise", "root", "root");            PreparedStatement ps = con.prepareStatement("insert into imgtable(imgname,imgnnn,list) values(?,?,?)");            name.add("abc");            name.add("def");            ps.setString(1, "JAVA");            ps.setString(2, "Spring");            ps.setString(3, name);            int z = ps.executeUpdate();            if(z!=0) {                System.out.println("sucess");            }        } catch (Exception ex) {            System.out.println(ex);        }        }}
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以通过将对象转换为 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();

 }


查看完整回答
反对 回复 2022-07-20
?
森栏

TA贡献1810条经验 获得超5个赞

您应该以对您有用的方式手动将数组转换为字符串,然后才能保存它。问题是 JDBC 没有相应的类型来自动映射您的对象,所以这取决于您。另一个选项可能是创建另一个表并设置外键。这取决于您应该遵循哪种方式的真实数据。



查看完整回答
反对 回复 2022-07-20
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

您可以遍历您的列表并将其内容作为单个字符串添加到数据库中,如果这是您正在寻找的,例如


String list = "";

for (String s : name) {

  list += s + " ";

}

ps.setString(3, list);


查看完整回答
反对 回复 2022-07-20
  • 3 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号