读书人

操作mySql 时失误寻求帮助

发布时间: 2013-02-20 12:23:22 作者: rapoo

操作mySql 时出错,寻求帮助!
如题,请高手帮忙看看,怎么解决,谢谢了!!




String sql = "select * from yxwl_userlog where yxwl_id=@yxwl_id ";
Map<String,String> map= new HashMap<String,String>();
map.put("@yxwl_id", yxwl_id);

ResultSet rs = null;
yxwl_userLog rt=null;

rs=MySqlHelper.executeQuery(sql, map);

调用下面代码时出现错误


/**
* 查【Query】
* @param sql
* @param obj
* @return ResultSet
*/
public static ResultSet executeQuery(String sql, Object... obj) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

try {
conn = getConnect();
pstmt = conn.prepareStatement(sql);

for (int i = 0; i < obj.length; i++) {
pstmt.setObject(i + 1, obj[i]); // <-----这理出错


}

rs = pstmt.executeQuery();

} catch (SQLException err) {
err.printStackTrace();
free(rs, pstmt, conn);
}
return rs;
}




错误信息如下:

java.sql.SQLException: Invalid argument value: java.lang.ArrayIndexOutOfBoundsException
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)


at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4375)
at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4019)
at com.yxwl.dal.MySqlHelper.executeQuery(MySqlHelper.java:128)
at com.yxwl.dal.yxwl_userService.GetUserLog(yxwl_userService.java:397)


[解决办法]
引用:
不好意思,好久没有上过CSDN了,编辑器不怎太会用, 用红色加亮部分没有生效

pstmt.setObject(i + 1, obj[i]); ---->出错在这个位置


MySql用?号不就可以了么。。。
obj[i]不是一个map么,怎么传给sql做参数?
[解决办法]
pstmt.setObject(i + 1, obj[i]);
你这把一个map给set进去,肯定错了嘛
pstmt.setObject(map的key, map的value);

读书人网 >Java Web开发

热点推荐