jsp控件服务器端

nvbavucw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(297)

我想将发送的数据与数据库中的所有数据进行比较。此coce仅将插入的日期与最后一行进行比较。如何与数据库中的所有行进行比较。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

String sData= request.getParameter("idatadata");
        String sAzienda= request.getParameter("idazienda");
        String sCommessa= request.getParameter("idcommessa");

        String date = "";
        String company = "";
        String order = "";

        Connect con = new Connect();

        try {

            Connection connection = con.createConnection();

            Statement statement = connection.createStatement();
            String sql ="SELECT * FROM table";

            ResultSet resultSet = statement.executeQuery(sql);

            while(resultSet.next()) {
            date = resultSet.getString("iddata");
            company = resultSet.getString("idazienda");
            order = resultSet.getString("idcommessa");

            }

            if((sData.equals(date) && sAzienda.equals(company)) && sCommessa.equals(order)) {
            out.print("already sent");
            con.closeConnection(connection);

            } 

            else {

            DbConnect.insertInDb(connection, sData, sOre, sMinuti, sAzienda, sCommessa, sRifInterno);
            dbc.closeConnection(connection);

            response.getWriter().append("ok! ");

            }
        } catch (Exception e) {

            e.printStackTrace();
        }

    }
dfuffjeb

dfuffjeb1#

之所以只检查最后一行,是因为每次检索行时while循环都会覆盖局部变量:

while(resultSet.next()) {
    // these lines overwrite the local vars for each row
    date = resultSet.getString("iddata");
    company = resultSet.getString("idazienda");
    order = resultSet.getString("idcommessa");
}

但实际上,在从db转到下一行之前,不会检查循环中的本地变量。您应该将支票添加到循环中:

while(resultSet.next()) {
    date = resultSet.getString("iddata");
    company = resultSet.getString("idazienda");
    order = resultSet.getString("idcommessa");

    // add your check here
    if((sData.equals(date) && sAzienda.equals(company)) && sCommessa.equals(order)) {
        out.print("already sent");
        break;
    } 
}

最好是根据您要查找的数据执行选择。如果没有结果,则数据不在数据库中。这种方法更有效。如果您决定走这条路(这是一个好主意),请使用准备好的语句,这样就不会在代码中引入sql注入漏洞。

相关问题