亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我正在嘗試將 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 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號