java - 将多个字符串数组插入数据库

标签 java mysql

有四个不同的数组字符串,我必须将所有数据插入数据库,但它只将最后一个字符串数组以及第一个、第二个和第三个数组字符串的最后一个值存储到数据库中。

public class Scrape {

    private static final String url1 = "jdbc:mysql://localhost/Scraping_Data";

    private static final String user = "root";

    private static final String password = "root@123";
    private String title="",rating="",price="",url="";

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getRating() {
        return rating;
    }

    public void setRating(String rating) {
        this.rating = rating;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public static void main(String[] args)throws IOException {
        try
        {
        List<String> ar1 = new ArrayList<String>();
        List<String> ar2 = new ArrayList<String>();
        List<String> ar3 = new ArrayList<String>();
        List<String> ar4 = new ArrayList<String>();
        Class.forName("org.gjt.mm.mysql.Driver");
        Connection con = DriverManager.getConnection(url1, user, password);
        CallableStatement stmt = con.prepareCall("INSERT INTO datascrape(title, price, url, rating) VALUES(?, ?, ?, ?)");

        Document doc = Jsoup.connect("-----------").get();
        Elements temp=doc.select("div.productDisplay");
        Scrape s=new Scrape();
        int i=0;
        for(Element itemlist:temp)
        {
            i++;
            s.setTitle(itemlist.select("h4").text());
            s.setPrice(itemlist.select("span.price").text());
            s.setUrl(itemlist.select("a").attr("href"));
            s.setRating(itemlist.select("div.ratings").text());
            ar1.add(s.getTitle());
            ar2.add(s.getPrice());
            ar3.add(s.getUrl());
            ar4.add(s.getRating());

        }
              String[] str1=ar1.toArray(new String[ar1.size()]);
              String[] str2=ar2.toArray(new String[ar2.size()]); 
              String[] str3=ar3.toArray(new String[ar3.size()]);
              String[] str4=ar4.toArray(new String[ar4.size()]);

              for(String s1:str1) { 
                  System.out.println("Title : "+s1);
                  stmt.setString(1, s1);

              }
              for(String s2:str2) {
                  System.out.println("Price : "+s2); 
                  stmt.setString(2,s2);

              } 
              for(String s3:str3) 
              { 
                  System.out.println("URL : "+s3); 
                  stmt.setString(3, s3);

              } 
              for(String s4:str4) { 
                  System.out.println("Rating : "+s4);
                  stmt.setString(4, s4);
                  stmt.execute();

            }



        }
        catch(Exception e)
            {
                e.printStackTrace();
            }
    }
}

仅将评级值插入数据库中。但标题、价格和网址的最后一个值存储在列

最佳答案

你的概念有误。整个列表和数组是不必要的。看看这个tutorial .

    for(Element itemlist:temp)
    {
        stmt.setString(1, itemlist.select("h4").text());
        stmt.setString(2, itemlist.select("span.price").text());
        stmt.setString(3, itemlist.select("a").attr("href"));
        stmt.setString(4, itemlist.select("div.ratings").text());
        stmt.addBatch();        
    }        
    stmt.execute();

关于java - 将多个字符串数组插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167018/

相关文章:

java - Sonar-runner执行失败导致cast异常

java - jtable 重新加载,但是当单击 jcheck 框时会弹出旧数据

java - 将字符串类型日期更改为日期字符串

android - 如何通过 android Volley 或 JSON 从 mysql 检索特定行数据?

php - Verificar Campos 通讯模式

java - 一种在Java应用程序启动时加载大量资源的方法

php - For循环从数据库获取信息

mysql - 将 MSSQL 存储过程传输到 MySQL

php - 开关函数输出默认值而不是期望值

java - 如何在 JavaFX 中实现派生只读属性/值?