我们应该通过什么方法来完成它
问题描述:
我应该通过什么来完成此方法。错误是:我们应该通过什么方法来完成它
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);
答
你错过的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);
答
你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});
如果你读错误,你传递一个字符串,但'fireSelect'期望两个字符串数组之后。在Java中,参数是强制性的,没有像其他一些语言的默认值 – AxelH