繁体   English   中英

我们应该传递给方法什么来完成它

[英]What should we have to pass to method to complete it

我需要通过什么才能完成此方法。 错误是:

DBConnection类型中的方法fireSelect(String,String [],String [])不适用于参数(String)。

这是方法:

public static ResultSet fireSelect(String query, String[] types,
        String[] values) {
    try {
        PreparedStatement ps = getInstance().prepareStatement(query);
        if (types != null) {
            for (int i = 0; i < types.length; i++) {
                if (types[i].equals("int"))
                    ps.setInt((i + 1), Integer.parseInt(values[i]));
                else if (types[i].equals("string"))
                    ps.setString((i + 1), values[i]);
                else if (types[i].equals("double"))
                    ps.setDouble((i + 1), Double.parseDouble(values[i]));
            }
        }
        return ps.executeQuery();
    } catch (Exception e) {
        try {
            connection = null;
            if (cnt < 2) {
                connection = getInstance();
                cnt++;
                fireSelect(query, types, values);
            } else {
                cnt = 0;
            }
        } catch (Exception ee) {
            System.out.println("Exception :" + ee);
        }
    }
    return null;
}

这是我在校准此方法时使用的

ResultSet rs = DBConnection.fireSelect(
                                    "select dealer_id,car_servicing,car_servicing,cost,features "
                                            + " from dealer_car,carservicing where "
                                            + "dealer_car.car_servicing=carservicing.car_servicing and dealer_id="
                                            + dealerId);

由于您的SQL不需要任何参数,因此您只需

ResultSet rs = DBConnection.fireSelect(sql, null, null);

它需要3个参数,而您仅提供了一个。 只是打电话说,

ResultSet rs = DBConnection.fireSelect("Select Query", null, null);

您需要将所有3个参数传递给函数fireSelect()

您的SQL不需要参数,它是通过串联建立的,这不好。 fireSelect似乎是使用准备好的语句的帮助者,您正在避免这样做。

fireSelect("select * from ... where id=?", new String[]{"int"}, new String[]{"42"});

即使这样

fireSelect((String)null,(String[])null,(String[])null);

您缺少String []类型String []值 ,可以将其传递为null (在您的情况下),如果按以下方式调用它会更好:

String sql = "select dealer_id,car_servicing,car_servicing,cost,features from 
dealer_car,carservicing where dealer_car.car_servicing=carservicing.car_servicing
and dealer_id=:dealer_id";
String[] types = new String[]{"int"}; //or maybe string?
String[] vals = new String[]{dealerId};
ResultSet rs = DBConnection.fireSelect(sql, types, vals);

您的fireSelect方法需要3个参数:

您可以使用类似:

ResultSet rs = DBConnection.fireSelect(
                  "select dealer_id,car_servicing,car_servicing,cost,features "
                    + " from dealer_car,carservicing where "
                    + " dealer_car.car_servicing=carservicing.car_servicing and dealer_id="
                    + dealerId,
                    new String[]{"int"},
                    new String[]{dealerId});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM