如何将Java ArrayList插入MySQL表?

时间:2014-07-02 15:05:38

标签: java mysql jdbc arraylist

有人可以告诉我如何将Arraylist的值作为单个字符串插入MySQL表中?

例如,将“犯罪,戏剧,行动”插入表格“featuredfilms_INFO”的栏目“类型”。

这是我的代码的一部分:

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

有人可以详细解释我应该做什么以及为什么?

2 个答案:

答案 0 :(得分:4)

在插入之前加入所有字符串。

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

甚至会足够好,但上面的解决方案可以让你更自由地加入这些类型。

答案 1 :(得分:2)

我猜你很困惑,因为你的List<String>被称为流派,你试图按原样插入它。这不行。您需要在表格中插入List中的每个元素。

假设您已声明并初始化ID变量并且List<String> genre填充了正确的值,那么您应该只遍历列表并插入每个类型:

String query = "INSERT into featuredfilms_INFO (movieId, genres)" + "VALUES (?, ?)";
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, ID);
for (String realGenre : genre) {
    preparedStmt.setString (2, realGenre);
    preparedStmt.executeUpdate();
}