user3493831
user3493831

Reputation: 47

Exception in thread "main" java.util.NoSuchElementException?

i am trying to extract value from web site and inserting value in my db when i am going to insert data in my db i am getting exeception

Exception is : Exception in thread "main" java.util.NoSuchElementException

here is my code

public class ScrapCom {
    Statement st = null;
    Connection cn = null;
    public static void main(String args[]) throws InterruptedException, ClassNotFoundException, SQLException {
        int j = 0;
        WebDriver driver = new HtmlUnitDriver(BrowserVersion.getDefault());
        String sDate = "27/03/2014";
        String url = "http://www.upmandiparishad.in/commodityWiseAll.aspx";
        driver.get(url);
        Thread.sleep(5000);
        new Select(driver.findElement(By.id("ctl00_ContentPlaceHolder1_ddl_commodity"))).selectByVisibleText("Jo");
        driver.findElement(By.id("ctl00_ContentPlaceHolder1_txt_rate")).sendKeys(sDate);
        Thread.sleep(3000);
        driver.findElement(By.id("ctl00_ContentPlaceHolder1_btn_show")).click();
        Thread.sleep(5000);
        WebElement findElement = driver.findElement(By.id("ctl00_ContentPlaceHolder1_GridView1"));
        String htmlTableText = findElement.getText();
        // do whatever you want now, This is raw table values.
        htmlTableText = htmlTableText.replace("S.No.DistrictMarketPrice", "");
        htmlTableText = htmlTableText.replaceAll("\\s(\\d+\\s[A-Z])", "\n$1");
        htmlTableText = htmlTableText.replaceAll("(?=(.*?[ ]){4,}).*?[\n\r]", "");
        System.out.println(htmlTableText);
        StringTokenizer str = new StringTokenizer(htmlTableText);
        while (str.hasMoreElements()) {
            for (int i = 0; i < 4; i++) {
                String no = str.nextElement().toString();
                String city = str.nextElement().toString();
                String mandi = str.nextElement().toString();
                String price = str.nextElement().toString();
                Class.forName("com.mysql.jdbc.Driver");
                Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mandi", "root", "");
                //insert them into the database
                PreparedStatement ps = cn.prepareStatement("insert into commoditywise  values(?,?,?,?)");
                ps.setString(1, no);
                ps.setString(2, city);
                ps.setString(3, mandi);
                ps.setString(4, price);
                j = ps.executeUpdate();
                cn.close();
            }
        }
        if (j == 1) {
            System.out.println("data inserted");
        } else {
            System.out.println("not inserted");
        }
        driver.close();
        driver.quit();
    }
}

updated exception

Exception in thread "main" java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
    at java.util.StringTokenizer.nextElement(StringTokenizer.java:407)
    at Getdata1.main(Getdata1.java:48)
Java Result: 1

What am I missing here?

How can i remove this exception

Thanks in advance

Upvotes: 0

Views: 2136

Answers (1)

Ren&#233; Link
Ren&#233; Link

Reputation: 51373

I guess your problem is not the db insert. You are using StringTokenizer.nextElement() without testig if a next element is available.

while (str.hasMoreElements()) {
    for (int i = 0; i < 4; i++) {
         String no = str.nextElement().toString();
         String city = str.nextElement().toString();
         String mandi = str.nextElement().toString();
         String price = str.nextElement().toString();

If you do multiple nextElement() calls in a row you should first check if the expected token count is available by using StringTokenizer.countTokens()

public int countTokens()

Calculates the number of times that this tokenizer's nextToken method can be called > before it generates an exception. The current position is not advanced.

Returns: the number of tokens remaining in the string using the current delimiter set. See Also: nextToken()

Upvotes: 1

Related Questions