这个的问题不是return,而是传入的Strig类型的数组,因为数据中的数据类型不都是String类型的,也有number、float、double类型的,所以在进行增删改的操作的时候要对数据类型进行判断,然后传入符合数据库表要求的数据类型,一下是我的代码,仅供参考:
public int update(String sql,List<String[]> param){
//处理结果
public final String p_char = "1";
// 整数类型
public final String p_num = "2";
// 日期型
public final String p_date = "3";
// 浮点
public final String p_double = "4";
//实数
public final String p_float="5";
private static Connect conn;
int result = 0;
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取一个连接
conn = this.getConnection();
// 执行预备语句
ps = conn.prepareStatement(sql);
int seq = 1;
for(String[] elem : param){
// 参数数组长度为1的,默认为字符类型
if(elem.length == 1){
ps.setString(seq, elem[0]);
}else{
if(p_char.equals(elem[1])){
ps.setString(seq, elem[0]);
}else if(p_num.equals(elem[1])){
ps.setLong(seq, Long.valueOf(elem[0]));
}else if(p_double.equals(elem[1])){
ps.setDouble(seq, Double.valueOf(elem[0]));
}else if(p_date.equals(elem[1])){
java.util.Date tmp = DateUtil.parse(elem[0]);
Date temp = new Date(tmp.getTime());
ps.setDate(seq, temp);
}else if(p_float.equals(elem[1])){
ps.setFloat(seq, Float.parseFloat(elem[0]));
}
}
seq++;
}
// 执行操作
result = ps.executeUpdate();
ps.close();
ps = null;
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
} finally {
this.freeStatement(ps);
this.freeConnection(conn);
}
return result;
}
执行结果resul>0则操作成功
List<String[]> param中String[]中的只有两个元素,第一个是要插入的数据,第二个是对应的数据库中要求的数据类型,例如:param.add(new String[]{useid,conn.p_num}); |