본문 바로가기
MySql

MySQL Java ArrayList를 MySQL 테이블에 삽입하는 방법은 무엇입니까?

by 베이스 공부 2020. 12. 4.
반응형

누군가가 Arraylist의 값을 MySQL 테이블에 단일 문자열로 삽입하는 방법을 친절하게 말해 줄 수 있습니까?

예를 들어 "featuredfilms_INFO"테이블의 "genres"열에 "crime, drama, Action"을 삽입합니다.

이것은 내 코드의 일부입니다.

int i = 0;
List<String> genre = new ArrayList<String>();
.
.
.
Elements elms1 = doc.select("div.infobar"); 
Elements links1 = elms1.select("a[href]");
for (Element link1 : links1){
    if (link1.attr("href").contains("/genre/")) {
        genre.add(links1.get(i).text());
        i++;
    }
}
System.out.println("movie genres:" + genre); 
.
.
try {
     String query = "INSERT into featuredfilms_INFO (movieId, genres)" + "VALUES (?, ?)";
     PreparedStatement preparedStmt = conn.prepareStatement(query);
     preparedStmt.setString (1, ID);
     preparedStmt.setString (2, genre);
   .
   .
   .
}

내 문제는 문자열 유형이 아니기 때문에 장르 setString 을 사용할 수 없다는 것입니다. 처음에는 장르를 문자열로 정의했기 때문에 약간 혼란 스러웠지만 일부 검색 후 Java에서 동적 배열을 위해 ArrayList 를 사용해야한다는 것을 발견했습니다.

누군가 내가 무엇을해야하며 그 이유를 자세히 설명해 줄 수 있습니까?

 

해결 방법

 

삽입하기 전에 모든 문자열을 결합하십시오.

 String comma="";
 StringBuilder allGenres = new StringBuilder();
 for (String g: genre) {
    allGenres.append(comma);
    allGenres.append(g);
    comma = ", ";
 }

 String query = "INSERT into featuredfilms_INFO (movieId, genres)" + "VALUES (?, ?)";
 PreparedStatement preparedStmt = conn.prepareStatement(query);
 preparedStmt.setString (1, ID);
 preparedStmt.setString (2, allGenres.toString());

어쩌면

 preparedStmt.setString (2, genre.toString());

충분하지만 위의 솔루션은 장르에 참여하는 방법을 더 자유롭게 제공합니다.

 

참조 페이지 https://stackoverflow.com/questions/24534630

 

 

반응형

댓글