0
votes

J'essaie de stocker l'objet ArrayList dans la base de données

J'essaie de stocker l'objet ArrayList dans la base de données, mais lorsque je définirai l'objet à la préparation de la saisie d'erreur, je souhaite que l'utilisateur entrait plusieurs valeurs dans une colonne unique dans la base de données

mon code Java: p>

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);
        }
        }


}


1 commentaires

Eh bien, quel est le type de votre colonne "Liste" de votre base de données? Dans MySQL (toute base de données relationnelle de cette matière), vous n'avez pas de type de liste, en tant que telle, vous ne pouvez pas stocker une liste dans une ligne. Vous devez créer une nouvelle table pour cette liste et créer une clé étrangère.


3 Réponses :


0
votes

Vous devez convertir le tableau en chaîne manuellement de la manière qui vous est utile que vous pourrez l'enregistrer. Le problème est que JDBC n'a pas de type correspondant pour mapper automatiquement votre objet, de sorte que c'est à vous de décider. L'autre option pourrait être de créer une autre table et de définir une clé étrangère. Cela dépend des données réelles de la manière dont vous devriez suivre.


0 commentaires

0
votes

Vous pouvez parcourir votre liste et ajouter son contenu dans la DB sous forme de chaîne unique, si c'est ce que vous recherchez, par exemple

String list = "";
for (String s : name) {
  list += s + " ";
}
ps.setString(3, list);


0 commentaires

0
votes

Vous pouvez stocker n'importe quel objet dans la base de données en convertissant l'objet en byte []. Votre type de colonne doit être le type "blob".

échantillon Code Snippet P>

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


0 commentaires