我们应该通过什么方法来完成它

问题描述:

我应该通过什么来完成此方法。错误是:我们应该通过什么方法来完成它

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; 
} 

,这是我使用CAL期间通过这种方法

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); 
+0

如果你读错误,你传递一个字符串,但'fireSelect'期望两个字符串数组之后。在Java中,参数是强制性的,没有像其他一些语言的默认值 – AxelH

你错过的String []类型的String []值,你可以把它作为(你的情况),应该是如果你调用更好它像如下:

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); 

你需要通过所有3个argumens的功能fireSelect()

你的SQL没有期望一个参数,它是通过串联来建立的,什么是不好的。 fireSelect似乎是使用准备好的语句的助手,你正在避免这种情况。

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

即使这样

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

当你的SQL不期待任何PARAMATERS,你可以简单地做

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

该公司预计3个参数,而你只有一个提供。 只需致电喜欢,

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

我已经这样做了...但是这个dosenot工作在我的代码 – Vaidya

+0

感谢您的答复 – Vaidya

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});