2016-10-12 27 views
0

我應該通過什麼來完成此方法。錯誤是:我們應該通過什麼方法來完成它

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

回答

0

你錯過的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); 
0

你需要通過所有3個argumens的功能fireSelect()

0

你的SQL沒有期望一個參數,它是通過串聯來建立的,什麼是不好的。 fireSelect似乎是使用準備好的語句的助手,你正在避免這種情況。

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

即使這樣

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

當你的SQL不期待任何PARAMATERS,你可以簡單地做

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

該公司預計3個參數,而你只有一個提供。 只需致電喜歡,

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

我已經這樣做了...但是這個dosenot工作在我的代碼 – Vaidya

+0

感謝您的答覆 – Vaidya

0

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}); 
相關問題