Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC MySQL异常:“结果集关闭后不允许操作”,网页读取_Java_Mysql_Jdbc_Webpage - Fatal编程技术网

Java JDBC MySQL异常:“结果集关闭后不允许操作”,网页读取

Java JDBC MySQL异常:“结果集关闭后不允许操作”,网页读取,java,mysql,jdbc,webpage,Java,Mysql,Jdbc,Webpage,我正在使用MySQL连接器获取URL以查找网页上的值 我得到了上述信息,我不知道为什么。它插入来自rs1的第一条记录,但我不确定它为什么要关闭它 下面是我的代码 String strSQL = "SELECT * FROM element_info;"; String sElementID = ""; String sSymbol = ""; URL urlChartLink; URLConnection urlconn; String sChar

我正在使用MySQL连接器获取URL以查找网页上的值

我得到了上述信息,我不知道为什么。它插入来自rs1的第一条记录,但我不确定它为什么要关闭它

下面是我的代码

    String strSQL = "SELECT * FROM element_info;";
    String sElementID = "";
    String sSymbol = "";
    URL urlChartLink;
    URLConnection urlconn;
    String sChartLink = "";
    String sCurrentPrice = "";
    String FindValue = "last_last";

    try {

        Class.forName(driver).newInstance();
        Connection mysqlconn = DriverManager.getConnection(url + dbName, userName, password);
        Statement st1 = mysqlconn.createStatement();
        ResultSet rs1 = st1.executeQuery(strSQL);

        while (rs1.next()) {
            // Get all of the elements
            // Retrieve the ElementID
            sElementID = rs1.getString(1);
            // Retrieve the Symbol
            sSymbol = rs1.getString(2);
            // Retrieve the Chartlink
            sChartLink = rs1.getString(3);
            if (sChartLink == "") {
                break;
            }

            try {

                urlChartLink = new URL(sChartLink);
                urlconn = urlChartLink.openConnection();
                urlconn.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
                BufferedReader in = new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"));
                String currentLine;

                while ((currentLine = in.readLine()) != null) {
                    // See if the value is on this record
                    int pos1 = currentLine.indexOf(FindValue);
                    int pos2 = currentLine.indexOf("</span>");
                    // pos1 = 66
                    if (pos1 > 0) {
                        pos1 = pos1 + 21;
                        pos2 = pos2 - 1;
                        // System.out.print("pos1 = " + pos1 + "\n");
                        // System.out.print("pos2 = " + pos2 + "\n");

                        sCurrentPrice = currentLine.substring(pos1, pos2);
                        // System.out.print("sCurrentPrice = " + sCurrentPrice + "\n");

                        // Import into the marketprices
                        strSQL = "INSERT INTO marketprices"
                                + "(ElementID,Symbol,PullDatetime,Price) VALUES (" + "'" + sElementID + "','"
                                + sSymbol + "','" + sToday + "','" + sCurrentPrice + "')";

                        int val = st1.executeUpdate(strSQL);

                        if (val == 1)
                            System.out.print("Successfully inserted from " + sChartLink + "\n");
                        break;
                    }
                }                   
                in.close();
            } catch (IOException e) {
                System.out.print("Error getting ChartLink website: " + e.getMessage() + "\n");
                break;
            }
        }           
    } catch (Exception e) {
        System.out.print("Error: " + e.getMessage() + "\n");
        e.printStackTrace();
    }

您正在尝试使用已在使用的语句对象进行写入,因为您仍在从该语句对象读取现有的结果集。您需要为代码的更新部分创建一个新的语句对象:

strSQL = "INSERT INTO marketprices"+ "(ElementID,Symbol,PullDatetime,Price) VALUES (" + "'" + sElementID + "','"+ sSymbol + "','" + sToday + "','" + sCurrentPrice + "')";
Connection mysqlconn2 = DriverManager.getConnection(url + dbName, userName, password);
Statement st2 = mysqlconn.createStatement();
int val = st2.executeUpdate(strSQL);

我猜您多次执行了resultset,就我所知,您无法重新执行resultset的另一个对象。在while循环的结果集内创建新对象需要在循环内使用不同的语句对象:对语句执行另一个查询将关闭从该语句对象创建的任何打开的结果集。您可能还需要禁用自动提交。谢谢!!就这样!!一旦我做了改变,它就像一个魅力!!